- 原型链继承
Children.prototype = new Parents()
缺点:引用类型会共享
- 构造函数继承
function Parents() {
this.hobbies = ['music','reading']
}
function Children(){
Person.call(this)
}
优点:不会共享,还可以给父类传参
function Parents(name) {
this.hobbies = ['music','reading']
this.name = name
}
function Children(){
Parents.call(this, name)
}
缺点:函数也属于引用类型。所以每个实例里面的函数,虽然功能一样,但是却不是同一个函数
继承方式 | 继承核心代码 | 优缺点 |
---|---|---|
原型链继承 | Children.prototype = new Parents() | 实例的引用类型共享 |
构造函数继承 | 在子类(Children)里执行 Parents.call(this) | 实例的引用类型不共享 |
- 组合继承
普通属性使用构造函数继承
,函数使用原型链继承
call和prototype语句顺序无所谓,都调用一遍就行。
缺点:会执行2次父类构造函数里面的代码。最完美的是寄生组合式继承
to be continued...
网友评论