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