javascript原型继承
程序员文章站
2022-06-15 15:58:00
...
咱们前端的javascript比较任性调皮,类似java,c++之类的继承本质是在原有的class上,并生成一个subclass。
JavaScript由于采用原型继承,我们无法直接扩展一个Class,因为根本不存在Class这种类型。
如果咱们要原型继承的话可以这样:
1、创建一个构造函数作为运输载体;
2、将一个构造函数的原型赋予这个运输载体;
3、然后将运输载体实例化
4、将实例化后的运输载体赋予想要继承的构造函数的原型;
5、想要继承的构造函数的prototype.constructor = 想要继承的构造函数;
接下来看代码:
function inherits(Child, Parent) {
var F = function () {};
F.prototype = Parent.prototype;
Child.prototype = new F();
Child.prototype.constructor = Child;
}
这个inherits()函数可以复用:
function Student(props) {
this.name = props.name || 'Unnamed';
}
Student.prototype.hello = function () {
alert('Hello, ' + this.name + '!');
}
function PrimaryStudent(props) {
Student.call(this, props);
this.grade = props.grade || 1;
}
// 实现原型继承链:
inherits(PrimaryStudent, Student);
// 绑定其他方法到PrimaryStudent原型:
PrimaryStudent.prototype.getGrade = function () {
return this.grade;
};
写的不是很透彻,望理解