1
爲什麼b.first [0]返回「t」,我該如何避免這種情況?對象JavaScript中的奇怪行爲數組
我需要安全的「Q」在b.first [0]
var extend = function(o,p){
for(prop in p){
o[prop] = p[prop];
}
return o;
};
var a = {first:['q','w']};
var b = {};
extend(b,a);
document.write(a.first[0]); //q
document.write(b.first[0]); //q
a.first[0] = 't';
document.write(a.first[0]); // t
document.write(b.first[0]); // t ?????????????????????
因爲'a.first'是對數組的引用。當分配'b.first = a.first'(這就是* extend *似乎要做的事情)時,'b'獲得對同一個數組的引用。 – RobG 2013-04-05 05:57:07
你需要**對象的深**拷貝。 http://stackoverflow.com/questions/122102/most-efficient-way-to-clone-a-javascript-object/122704#122704 – HerrSerker 2013-04-05 06:02:36
在我使用一些deepExtend的真實的,但似乎我的版本不好。我會嘗試其他版本。謝謝! – Aleksey 2013-04-05 06:35:43