0

假设你有这个对象:

mainObj = {
   foo1: 'bar1',
   foo2: 'bar2',
   foo3: 'bar3'
}

现在我想通过做来关闭这个对象cloneObj = mainOb。现在我们有两个相同的对象。

当我出于某种原因更改克隆mainObj.foo1 = 'lolcats' 后的值时cloneObj.foo1 = 'lolcats'

我在 Chrome 的控制台中对一个更复杂的对象进行了测试。我确定我的脚本中没有任何内容可以使两个对象保持同步。我什至通过为 cloneObj 创建随机名称来确保这一点。

这种行为是故意的还是我遇到了某种错误?或者我只是在这里遗漏了一些非常基本的东西?

4

2 回答 2

3

您刚刚克隆了初始对象cloneObj = mainOb,实际上是在传递一个mainOb可以通过cloneObj变量名访问的引用。因此,您有两个引用相同对象的变量名。

于 2012-07-31T22:02:20.877 回答
2

当您分配/克隆对象时,例如cloneObj = mainOb您只是创建对同一对象的另一个引用。两者mainOb和都cloneOb指向同一个对象,因此一个对象的变化会反映在另一个对象上。

于 2012-07-31T22:01:24.827 回答