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