在JavaScript中恢复克隆的对象

时间:2016-09-02 04:54:55

标签: javascript

我想存储"这个"的初始状态。 (全局)范围,如下面的伪代码所示:

<script>
var copiedObject = Object.create(this);
x="foo";
console.log(x); // foo
</script>

稍后使用以下方法将其重置为此状态:

<script>
this = Object.create(copiedObject);
console.log(x); // undefined since it's a copy before x was assigned
</script>

这是克隆这种方法的正确方法,并使用该克隆稍后替换原始文件吗?我想这样做而不是&#34;刷新&#34;我的HTML5 / JavaScript应用程序的页面和清除 AJAX新增的功能。

1 个答案:

答案 0 :(得分:1)

在您发布的代码中,您正在制作该对象的浅表副本。因此o1的所有属性都是通过引用o2复制的,如果它们是复杂类型(对象)。意思是:

 var o1 = { a: { b: 1 } },
     o2 = Object.create(o1);

o1.a.b = 10;
console.log(o2.a.b) // 10

你需要做的是深拷贝(SO),但正如你可能看到的那样,这会让你陷入深深的兔子洞。