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());

出力: 何か 何か リーバイス リーバイス

したがって、すべてが正常に機能します。しかし、問題は、jeans.name = "Levis" の割り当てを実行するとすぐに、デバッガーの TWO 'name's. 親製品用に 1 つ、アパレル用に 1 つ。メモリの無駄じゃない?name は親のプロパティであるため、新しいプロパティが作成されるのではなく、このプロパティが使用されることを期待しています。

理由についてのアイデアはありますか?

ありがとう

リオール

4

1 に答える 1

0

実際、入力を終えたとき、私は答えに気付きました.Javascriptがそのように動作するのは実際には非常に賢いです。製品がアパレルの変更の影響を受ける場合、製品から派生したオブジェクトの後続のすべてのインスタンスは、派生オブジェクトによる最後の変更を保持します。

したがって、プロトタイプの継承された言語で必要とされます

みんなありがとう、今ははっきりしています。リオール

于 2013-03-05T21:17:22.687 に答える