三种常见继承
2017-03-19 本文已影响0人
沈墨空
1.原型继承
function A (){
this.name = 'Jack';
}
function B (){
this.type = 'type';
}
B.prototype = new A();
var b = new B();
console.log(b instanceof A); // true
2.构造继承
function A (){
this.name = 'Jack';
}
function B (){
this.type = 'type';
A.call(this);
}
var b = new B();
console.log(b instanceof A); // false
对比
- 构造函数继承的方法类似于复制,消耗内存
- 构造函数继承的方法不能改变,而原型继承可以通过改变原型链改变
3.组合模式
- 方法用原型继承 (公用)
- 属性用构造继承 (私有)
function A (){
this.name = 'Jack';
}
A.prototype.output = function(){
console.log(this.name);
}
function B (){
this.type = 'type';
A.call(this);
}
B.prototype = new A();
var b = new B();
b.output(); // 'Jack'