深拷貝&淺拷貝
阿新 • • 發佈:2022-05-10
一、淺拷貝
建立一個新物件,這個物件有著原始物件屬性值的一份精確拷貝。如果屬性是基本型別,拷貝的就是基本型別的值,如果屬性是引用型別,拷貝的就是記憶體地址 ,所以如果其中一個物件改變了這個地址,就會影響到另一個物件。
二、深拷貝
將一個物件從記憶體中完整的拷貝一份出來,從堆記憶體中開闢一個新的區域存放新物件,且修改新物件不會影響原物件
三、深拷貝方式
1.JSON.parse(JSON.stringify( ));
2.遞迴拷貝
- 淺拷貝
function clone(target) { let cloneTarget = {}; for (const key intarget) { 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; } };