JavaScript实现类与继承的方法(全面整理) javascript 刘宁Leo 2月10日发布
2023-09-27 14:29:04 时间
JavaScript定义类的4种方法
工厂方法
function creatPerson(name, age) {
var obj = new Object();
obj.name = name;
obj.age = age;
obj.sayName = function() {
window.alert(this.name);
};
return obj;
}
构造函数方法
function Person(name, age) {
this.name = name;
this.age = age;
this.sayName = function() {
window.alert(this.name);
};
}
原型方法
function Person() {
}
Person.prototype = {
constructor : Person,
name : "Ning",
age : "23",
sayName : function() {
window.alert(this.name);
}
};
大家可以看到这种方法有缺陷,类里属性的值都是在原型里给定的。
组合使用构造函数和原型方法(使用最广)
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype = {
constructor : Person,
sayName : function() {
window.alert(this.name);
}
};
将构造函数方法和原型方法结合使用是目前最常用的定义类的方法。这种方法的好处是实现了属性定义和方法定义的分离。比如我可以创建两个对象person1
和person2
,它们分别传入各自的name
值和age
值,但sayName()
方法可以同时使用原型里定义的。
JavaScript实现继承的3种方法
借用构造函数法(又叫经典继承)
function SuperType(name) {
this.name = name;
this.sayName = function() {
window.alert(this.name);
};
}
function SubType(name, age) {
SuperType.call(this, name); //在这里借用了父类的构造函数
this.age = age;
}
对象冒充
function SuperType(name) {
this.name = name;
this.sayName = function() {
window.alert(this.name);
};
}
function SubType(name, age) {
this.supertype = SuperType; //在这里使用了对象冒充
this.supertype(name);
this.age = age;
}
组合继承(最常用)
function SuperType(name) {
this.name = name;
}
SuperType.prototype = {
sayName : function() {
window.alert(this.name);
}
};
function SubType(name, age) {
SuperType.call(this, name); //在这里继承属性
this.age = age;
}
SubType.prototype = new SuperType(); //这里继承方法
组合继承的方法是对应着我们用‘组合使用构造函数和原型方法’定义父类的一种继承方法。同样的,我们的属性和方法是分开继承的。
总结
以上就是常见的JavaScript中面向对象编程的几种实现,欢迎大家补充与指正。
相关文章
- 100个直接可以拿来用的JavaScript实用功能代码片段(转)
- JavaScript如何实现继承
- JavaScript中的3个包装类以及字符串的常用方法
- javascript中的call()和apply()方法的使用
- 【JavaScript】Proxy 实例方法(一)
- 【JavaScript】Array 实例方法(二)
- 24个 JavaScript 循环遍历方法,你都知道吗?
- javascript中apply、call和bind的区别及方法详解
- JavaScript 数组——filter()、map()、some()、every()、forEach()、lastIndexOf()、indexOf()
- 十大经典排序算法的 JavaScript 实现
- JavaScript对象之get/set方法
- 【笔记】JavaScript版数据结构与算法——基础算法之“递归类”(93. 复原IP地址)
- 【JavaScript由浅入深】实现继承的方法
- JavaScript--【Promise】详解Promise_API
- JavaScript node.js Discord.js v13报错:ReferenceError: AbortController is not defined解决方法
- Js(Javascript)中的apply方法的使用
- JavaScript解决命名冲突的一种方法
- Javascript读书笔记(一)
- 手势密码,纯JavaScript实现,支持iOS和Android
- javascript 冒泡排序法