首页 > 解决方案 > 为什么对象保留其继承的属性?

问题描述

function Dog(name){
    this.name=name;
}
let dogA=new Dog('Paul');
 
Dog.prototype.eat=true;
dogA.eat; //true

现在我销毁了 Dog.prototype,为什么 dogA.eat 还在那里?

Dog.prototype=null;
dogA.eat;// Still true?

我想dogA.eat继承自Dog.prototype. 现在Dog.prototype没了。怎么可能dogA.eat还存在?

标签: javascript

解决方案


该属性eat存储在dogA.__proto__. 当您使用new运算符创建 的实例dogADog,javascript 将执行此操作dogA.__proto__ = Dog.prototype = someObject。现在你做Dog.prototype = null,但dogA.__proto__仍然等于someObject。所以dogA.eat还是会true的。如果你做dogA.__proto__ = null,那么dogA.eat就会undefined


推荐阅读