0

我们有一个如下所示的代码:

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 Levis

所以,一切正常!但是,问题是,一旦我们执行了 jeans.name = "Levis" 分配,我们就会在调试器中看到 TWO 'name's。一个用于父产品,一个用于服装。这不是浪费内存吗?由于 name 是父级的一个属性,我希望这个属性会被使用,而不是一个新的被创建。

关于为什么的任何想法?

谢谢

里奥

4

1 回答 1

0

实际上,当我完成打字时,我意识到了答案:以这样的方式行事实际上是非常聪明的 Javascript。如果 Product 会受到 Apparel 更改的影响,那么任何 Product 派生对象的所有后续实例都将携带任何派生对象的最后更改。

因此,原型继承语言需要它

谢谢大家,现在清楚了。里奥

于 2013-03-05T21:17:22.687 回答