2017-01-23 20 views
3

私は置きたいオブジェクトを持っています。 - >jsオブジェクトの置換/参照の変更

ref = { x: 'a' } 

var obj1 = { x: 'a' }; 
var ref = obj1; 
var obj2 = { y: 'b' }; 
obj1 = obj2; 

結果が、私はそれが

ref = { y: 'b' } 
+0

ような何かを行うことができますobj1.xあなたが代わりに削除したい場合はそれはあなたが –

+0

I bを望むものを、非常に明確ではありませんオブジェクトへの参照を非同期的に置換したい。 obj1 = obj2を実行すると、obj1への参照がobj2への参照に置換されます。 – Chris

+2

これはJavaScriptの動作ではありません:) – ValLeNain

答えて

1

ない可能得るためにOBJ2を指すようにも変更を取得します。 JSはオブジェクトを参照のコピーで渡します。したがって、var ref = obj1のステップでは、Cのような参照ポインタを実際には割り当てません。代わりに、参照するオブジェクトを指す参照のコピーを作成しています{x: 'a'}のように。

その他のオプションについては、この回答を参照してください:https://stackoverflow.com/a/17382443/6415214

1
あなたがアプローチに従うことができます{Y、B 'を'}追加したい場合は、obj2の

var obj1 = { x: 'a' }; 
var ref = obj1; 
var obj2 = { y: 'b' }; 
obj1.x = obj2.y; 
console.log(ref) // Print {x, 'b'} 

の分野でOBJ1のすべてのフィールドを変更しようとすることができます

obj1.y=obj2.y 
console.log(obj1); prints {x: "b", y: "b"} 
console.log(ref); prints {x: "b", y: "b"} 

あなたはこの

delete obj1.x; 
console.log(ref) prints {y:'b'} 
関連する問題