2012-07-31 36 views
0

做出未来的变化可以说,你有这样的对象:克隆对象的继承是第一目标

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

现在我想通过做cloneObj = mainOb,使这个物体的特写。现在我们有两个相同的对象。

当我后更改的mainObj.foo1 = 'lolcats'值我做了克隆,然后因为某些原因cloneObj.foo1 = 'lolcats'

我在Chrome的控制台测试这复杂得多的对象。我知道我的脚本中没有任何东西会继续使这两个对象同步。我甚至通过为cloneObj创建随机名来确保这一点。

此行为是故意完成还是遇到某种错误?还是我在这里错过了一些非常重要的东西?

回答

3

当您刚刚做了cloneObj = mainOb时,您没有克隆初始对象,而是实际上传递了可通过cloneObj变量名访问的mainOb的引用。因此,您有两个引用SAME对象的变量名称。

+0

好的......哈哈。猜猜我错过了一些基本的东西。 :) – 2012-07-31 22:06:44

2

当您分配/克隆对象,如cloneObj = mainOb您只需创建另一个对同一对象的引用。 mainObcloneOb都指向同一个对象,因此一个中的更改反映在另一个上。