我们的代码如下所示:
var Product = function(){
}
Product.prototype =
{
GetName: function(){
return this.name;
},
name: "something"
};
var Apparel = function(){
}
Apparel.prototype = Object.create(Product.prototype);
var jeans = new Apparel();
console.log(jeans.name);
console.log(jeans.GetName());
jeans.name = "Levis";
console.log(jeans.name);
console.log(jeans.GetName());
输出: 某物 某物 莱维斯 Levis的
所以,一切都按预期工作!但是,问题是,只要我们执行jeans.name =“Levis”赋值,我们就会在调试器中看到TWO'的名字。一个用于父产品,一个用于服装。那不是记忆浪费吗?因为name是父项的属性,所以我希望这个属性会被使用,而不是创建一个新属性。
关于为什么的任何想法?
感谢
利奥尔
答案 0 :(得分:0)
实际上,当我完成打字时,我意识到了答案:Javascript实际上非常聪明,以这种方式行事。如果Product会受到服装更改的影响,那么任何Product派生对象的所有后续实例都将包含任何派生对象的最后更改。
因此,原型继承语言需要它
谢谢大家,现在很清楚。 利奥尔