0
我正在用jQuery測試深層複製,並且我得到了一個空對象,而不是正確的副本。jQuery.extend()深層複製不能按我的預期工作?
但函數loop2
做了預期的副本(作爲參考傳遞)。
但是不會loop
也獲得擴展/合併對象的引用嗎?
爲什麼它不傳遞正確?
var obj1 = { hello: { f: 1 } };
var obj2 = {};
function loop(original, copy) {
copy = $.extend(true, {}, original);
console.log(copy);
}
function loop2(original, copy) {
$.extend(true, copy, original);
console.log(copy);
}
function run() {
loop(obj1, obj2);
console.log(obj2);
loop2(obj1, obj2);
console.log(obj2);
}
輸出:
Object {hello: Object}
Object {} ---> why this one did not get the correct content?
Object {hello: Object}
Object {hello: Object}
我明白了。但它很奇怪。由於如何創建變量名稱和其引用之間的鏈接?我可以認爲,如果var a = {test:1},那麼事物「var a」將被鏈接到引用xyz ...因此,當我在循環函數中傳遞參數副本作爲var a的引用時,無論如何在循環範圍內,副本arg被分配了一個新的引用,因爲邏輯會認爲它會改變引用,現在var a被分配給新的引用 – Miguel