Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript将一个对象文字的内容复制到另一个对象文字,而不反映将来的更改?_Javascript_Object Literal - Fatal编程技术网

Javascript将一个对象文字的内容复制到另一个对象文字,而不反映将来的更改?

Javascript将一个对象文字的内容复制到另一个对象文字,而不反映将来的更改?,javascript,object-literal,Javascript,Object Literal,我试图为不支持html5的浏览器模拟html5sessionStorage。我正在将sessionStorage对象模拟为对象文本,并通过存储sessionStorage对象的旧版本和新版本来检查它是否已更改。但是,如果我直接使sessionStorage的“旧”副本直接等于sessionStorage对象本身,如果对象sessionStorage发生更改,它也会在“旧”副本上反映这些更改。如何复制对象文字而不反映将来的更改?不起作用的代码示例位于。单击该按钮将更新会话存储对象。 结果记录在控制

我试图为不支持html5的浏览器模拟html5
sessionStorage
。我正在将
sessionStorage
对象模拟为对象文本,并通过存储
sessionStorage
对象的旧版本和新版本来检查它是否已更改。但是,如果我直接使
sessionStorage
的“旧”副本直接等于
sessionStorage
对象本身,如果对象
sessionStorage
发生更改,它也会在“旧”副本上反映这些更改。如何复制对象文字而不反映将来的更改?不起作用的代码示例位于。单击该按钮将更新
会话存储
对象。 结果记录在控制台中。

注意:您必须使用internet explorer 7.0或更低版本才能使示例生效。

您要查找的内容称为“深度副本”。谷歌有很多例子,jQuery中有一个例子-
$.extend(true,…)

你要找的就是所谓的“深度拷贝”。谷歌有很多例子,jQuery中有一个例子-
$。extend(true,…)

@papirtiger FWIW我不会复制jQuery的实现,因为它有很多在这种情况下不需要的功能。但是,如果已经加载了jQuery,那么滚动另一个实现就没有多大意义了。我不是建议他复制它,然而,这是一个非常好的例子,它避免了JS循环和原型属性中的许多可能陷阱。@papirtiger FWIW我实际上不会复制jQuery的实现,因为它有很多在这种情况下不需要的功能。但是,如果已经加载了jQuery,那么滚动另一个实现就没有多大意义了。我不是建议他复制它,但是这是一个非常好的例子,它避免了JS循环和原型属性中的许多可能陷阱。