2017-11-18 7 views
0

object.create(parentObject)と、以下のようにちょうど子オブジェクトに親オブジェクトを割り当てることの違いは何ですか:object.create(parentObject)と、親オブジェクトを子オブジェクトに割り当てるだけの違いは何ですか?

var child = Object.create(parent); 
var child2 = parent; 

彼らは私に同じことをやっているようです。参考のため フルコード:

var parent = { 
 
    get: function fn() { 
 
    return this.val; 
 
    }, 
 
    val: 42 
 
}; 
 

 
var child = Object.create(parent); 
 
var child2 = parent; 
 

 
parent.val = 67; 
 
alert(parent.val); //outputs 67 
 
alert(child.val); //outputs 67 
 
alert(child2.val); //outputs 67

+3

child.val'/'' child2.val'に割り当ててみた後、 'parent'で何が起こるか見て – Bergi

答えて

1

Object.create(parent)プロトタイプparentである新しいオブジェクトを作成します。

割り当ては新しいオブジェクトを作成せず、child2parentは両方とも同じオブジェクトを参照します。

プロトタイプは、オブジェクトに明示的に存在しないプロパティにアクセスしようとする場合にのみ使用されます。

以下の例では、child2.val2に割り当てるのは同じオブジェクトなのでparent.val2に変更されています。しかし、child.val2に割り当てることは、異なるオブジェクトであるため、parentには影響しません。 childには独自のval2プロパティがあるため、これは親から継承されません。

var parent = { 
 
    val2: 1 
 
}; 
 

 
var child = Object.create(parent); 
 
var child2 = parent; 
 

 

 
child.val2 = 2; 
 
child2.val2 = 3; 
 
console.log(parent.val2); //outputs 3 
 
console.log(child.val2); //outputs 2 
 
console.log(child2.val2); //outputs 3

関連する問題