我想存储"这个"的初始状态。 (全局)范围,如下面的伪代码所示:
<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新增的功能。
答案 0 :(得分:1)
在您发布的代码中,您正在制作该对象的浅表副本。因此o1
的所有属性都是通过引用o2
复制的,如果它们是复杂类型(对象)。意思是:
var o1 = { a: { b: 1 } },
o2 = Object.create(o1);
o1.a.b = 10;
console.log(o2.a.b) // 10
你需要做的是深拷贝(SO),但正如你可能看到的那样,这会让你陷入深深的兔子洞。