2010-08-12 92 views
0

情景: - 填寫object1 - 複製的object1的內容,對象2 - 從object1JS:相關對象

結果現在刪除元素: - 既object1和對象2有1元刪...?!

祝願結果: - object1應該有1元比對象2

的代碼少:

var object1 = new Object(); 
object1['key_one'] = 'value_1'; 
object1['key_two'] = 'value_2'; 
object1['key_three'] = 'value_3'; 
object1['key_four'] = 'value_4'; 
var object2 = new Object(); 
object2 = object1; 
delete object1['key_three']; 

我在做什麼錯?

+0

我沒有看到任何與多維數組的關係.. – mykhal 2010-08-12 19:22:16

+0

您的代碼與您的解釋不符。我懷疑你正在做一個淺拷貝,但你的代碼根本沒有拷貝。 – deinst 2010-08-12 19:22:32

回答

0

你的代碼不會做任何複製。 object2只是一個新的空對象。試試這個:

var object1 = { 
    key_one: "value_1", 
    key_two: "value_2", 
    key_three: "value_3", 
    key_four: "value_4" 
}; 
var object2 = {}; 
for (var prop in object1) { 
    object2[prop] = object1[prop]; 
} 
delete object1["key_three"]; 

現在object2object1副本,但是從object1刪除的屬性不會影響object2

希望是有道理的。

+0

賣淫,你救了我的一天,它的作品!感謝一千次!計算器規則! – Ozcar 2010-08-12 19:27:21

+0

@Ozcar:然後,將此答案標記爲正確。給男人一些代表! – ajm 2010-08-12 19:33:14

+0

@Ozcar:不要忘記使用'hasOwnProperty'。 – 2010-08-12 19:39:47

0

它在我看來不像object2曾經收到object1的任何屬性。你在正確的軌道上,但你需要複製它們。

var object1 = new Object(); 
object1['key_one'] = 'value_1'; 
object1['key_two'] = 'value_2'; 
object1['key_three'] = 'value_3'; 
object1['key_four'] = 'value_4'; 

var object2 = new Object(); 
for(var i in object1){ 
    object2[i] = object1[i]; 
} 
delete object1['key_three'];