1、原型的动态性
重新原型后切断了 现有原型与任何之前实例对象之间的关系;它引用的还是之前的原型
function Person(){};
person1 = new Person();
Person.prototype = {
name: 'Larmber',
sayName: function(){
console.log(this.name)
}
}
person1.sayName() //报错 因为指向的还是之前的原型
2、原型链
function SubperType(){
this.color = ["red","green"];
}
function SubType(){};
SubType.prototype = new SubperType();
var a = new SubType();
a.color.push("red");
var b = new SubType();
console.log(b.color); //red, green red
原型链问题: 实例共享 引用类型值
2、借用构造函数
使用 apply / call
修改以上代码:
function SubType(){
SubperType.apply(this)
}
借用构造函数问题: 方法都在函数中,所以无法复用