close
複製物件看起來是一個很簡單的操作,但是在之前打算複製一個物件時卻意外的碰上了困難。
如果像其它程式語言一樣,先設定一個全域變數,然後在function裡定義另一個變數,並用等號把全域變數的內容指定給新變數的話....
var item1 = {
i1: 'aaa',
i2: 'bbb',
i3: 'ccc'
};
function copy1() {
var item2 = new Object();
item2=item1;
}
看起來像是把item1的內容複製給了item2...但是這樣是錯的!
如果用這個方法,實際上是把item2的參考位址指向了item1,當item1的內容改變數,item2的內容也會一起改
變,也就是說item2只是item1的一個「別名」,並不是一個新的物件。
javascript中並沒有提供一個方便的複製指令,這時該怎麼辦呢?
我的答案是用用jQuery中的extend方法。
extend方法會把物件中的成員一個一個複製到新的物件中,這樣才能達成「複製一個物件」的目的。
像這樣做:
function copy1() {
var item3 = new Object();
var item3 = $.extend({}, item1); //物件複製
}
接下來無論對item3做什麼操作,都不會再影響到原來的全域變數item1,成功達到複製物件的目標:)
全站熱搜