js 轉殖 淺轉殖 深轉殖)

2022-06-14 20:30:13 字數 1813 閱讀 1472

淺轉殖

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.深轉殖和淺轉殖的區別,淺轉殖指的是轉殖的時候僅僅轉殖物件本身 物件的基本變數 而不拷貝物件的引用變數。深轉殖指的是轉殖的時候不僅轉殖物件本身,而且拷貝物件包含的引...