1. 程式人生 > 其它 >深拷貝&淺拷貝

深拷貝&淺拷貝

一、淺拷貝

建立一個新物件,這個物件有著原始物件屬性值的一份精確拷貝。如果屬性是基本型別,拷貝的就是基本型別的值,如果屬性是引用型別,拷貝的就是記憶體地址 ,所以如果其中一個物件改變了這個地址,就會影響到另一個物件。

二、深拷貝

將一個物件從記憶體中完整的拷貝一份出來,從堆記憶體中開闢一個新的區域存放新物件,且修改新物件不會影響原物件

三、深拷貝方式

1.JSON.parse(JSON.stringify( ));

2.遞迴拷貝

  • 淺拷貝
function clone(target) {
    let cloneTarget = {};
    for (const key in
target) { cloneTarget[key] = target[key]; } return cloneTarget; };
  • 深拷貝
module.exports = function clone(target) {
    if (typeof target === 'object') {
        let cloneTarget = Array.isArray(target) ? [] : {};
        for (const key in target) {
            cloneTarget[key] = clone(target[key]);
        }
        
return cloneTarget; } else { return target; } };