// 原型链的破环
function Animal() {
this.name = 'animal';
}
Animal.prototype.getAnimalName = function () {
console.log(this.name);
};
function Dog() {
this.name = 'dog';
}
// 继承
Dog.prototype = new Animal()
// 以对象字面量方式创建原型方法会破坏之前的原型链
Dog.prototype = {
getDogName() {
console.log(this.name);
},
someOtherMethod() {
return false;
}
};
// Dog.prototype.__proto__ = Animal.prototype;
var d1 = new Dog();
d1.getAnimalName(); //出错
// 子类的原型被赋值Animal的实例后,又被一个对象字面量覆盖了,覆盖后的原型是一个Object实例,而不再是Animal的实例,因此之前的原型链就断了,Dog和Animal之间没有任何关系了,所以再调用Animal中的方法就会出错
javaScript继承之原型链的破坏
最新推荐文章于 2024-11-05 22:07:06 发布