2012-07-31 67 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都指向同一個對象,因此一箇中的更改反映在另一個上。