opener`在我父窗口的子窗口中。爲什麼父窗口對象通過JavaScript中的子窗口更新?
在我的父窗口的代碼是
var a ={"test":""};
var b=a;
在我的子窗口
我的代碼是
top.opener.b.test="set by child";
現在我關閉這個子窗口
現在,當我看到a.test
它給了我set by child
我不知道我什麼時候更新b
爲什麼它是更新的a
我怎麼能由a
重置b
請幫我傢伙。
謝謝...
opener`在我父窗口的子窗口中。爲什麼父窗口對象通過JavaScript中的子窗口更新?
在我的父窗口的代碼是
var a ={"test":""};
var b=a;
在我的子窗口
我的代碼是
top.opener.b.test="set by child";
現在我關閉這個子窗口
現在,當我看到a.test
它給了我set by child
我不知道我什麼時候更新b
爲什麼它是更新的a
我怎麼能由a
重置b
請幫我傢伙。
謝謝...
因爲b
,實際上並不是a
副本,它是a
參考。 這意味着當您參考b
時,您確實參考了a
。
在JavaScript中的對象是如何工作的更多信息https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects
那我怎麼能通過b的副本 –
這個問題已經回答了很多,這是最流行的答案:http://stackoverflow.com/questions/728360/most-elegant-way-to-clone-a- javascript-object另外不同的框架和庫都有克隆對象的方法。 –
感謝它對我的作品 –
http://stackoverflow.com/questions/518000/is-javascript-a-pass-by-reference-or-pass-by-value-language – adeneo