淺轉殖
var obj =
}}; var obj1 = ;
function clone(origin,target)
}return target;
}clone(obj,obj1);
obj1.name = 'ge';
console.log(obj1.name);//ge
console.log(obj.name);//chen
obj1.card.push("abc");
console.log(obj.card);//['visa','cb','abc'];因為淺轉殖的物件的引用值是拷貝物件裡的引用,這兩個物件的card指向的地方是一致的。
深轉殖
這兩個物件裡的引用的獨立拷貝的,不指向同乙個地方。
深轉殖
function deepclone(origin, target);
var tostr = object.prototype.tostring;
var arrstr = '[object array]';
for (var prop in origin)else;
// }
target[prop] = (tostr.call(origin[prop])==arrstr) ? : {};
deepclone(origin[prop],target[prop]);
}else}}
return target;
}deepclone(obj,obj1);
obj1.card.push("abc");
console.log(obj.card);//['visa','cb'];這兩個物件裡的引用的獨立拷貝的,不指向同乙個地方。
淺轉殖
var obj =
}}; var obj1 = ;
function clone(origin,target)
}return target;
}clone(obj,obj1);
obj1.name = 'ge';
console.log(obj1.name);//ge
console.log(obj.name);//chen
obj1.card.push("abc");
console.log(obj.card);//['visa','cb','abc'];因為淺轉殖的物件的引用值是拷貝物件裡的引用,這兩個物件的card指向的地方是一致的。
深轉殖
這兩個物件裡的引用的獨立拷貝的,不指向同乙個地方。
深轉殖
function deepclone(origin, target);
var tostr = object.prototype.tostring;
var arrstr = '[object array]';
for (var prop in origin)else;
// }
target[prop] = (tostr.call(origin[prop])==arrstr) ? : {};
deepclone(origin[prop],target[prop]);
}else}}
return target;
}deepclone(obj,obj1);
obj1.card.push("abc");
console.log(obj.card);//['visa','cb'];這兩個物件裡的引用的獨立拷貝的,不指向同乙個地方。
JS淺轉殖和深轉殖
為什麼會有轉殖這麼個玩意呢?上 var a 1,2,3 var b a a 1 4 console.log b 1 4 這就是我們為什麼提到轉殖的原因。我只不過改了a陣列的內容,怎麼b陣列的內容也跟著一起變了嘞?這裡需要知道a和b在棧和堆中的儲存情況 大概說下,陣列的內容是儲存在堆中的,而a和b不過...
JS(深轉殖和淺轉殖)
1 區別 淺轉殖是複製物件的指標位址,而不是物件本身,新舊物件共享同一塊記憶體。深轉殖是另外創造乙個一模一樣的物件,新舊物件不再共享記憶體,修改新物件不會改到原物件。2 1 淺轉殖 var liming function cloned obj for var key in obj return ne...
轉殖,深轉殖和淺轉殖
轉殖,深轉殖和淺轉殖。1.實現轉殖,繼承cloneable介面,實現clone beanutils.clonebean origin 2.深轉殖和淺轉殖的區別,淺轉殖指的是轉殖的時候僅僅轉殖物件本身 物件的基本變數 而不拷貝物件的引用變數。深轉殖指的是轉殖的時候不僅轉殖物件本身,而且拷貝物件包含的引...