js實現深度拷貝


js實現拷貝,使用普通賦值對象,在操作其中一個對象值的時候,另一個也會更改,不符合需求

因此引入深度拷貝,以下為實現深度拷貝的幾種法:

 

Object.assign

// 合並多個對象
var target = { a: 1, b: 1 };
var source1 = { b: 2, c: 2 };
var source2 = { c: 3 };
Object.assign(target, source1, source2);

注意: 這個是偽深度拷貝,只能拷貝第一層

 

遞歸拷貝

function deepClone(source){
  const targetObj = source.constructor === Array ? [] : {}; // 判斷復制的目標是數組還是對象
  for(let keys in source){ // 遍歷目標
    if(source.hasOwnProperty(keys)){
      if(source[keys] && typeof source[keys] === 'object'){ // 如果值是對象,就遞歸一下
        targetObj[keys] = source[keys].constructor === Array ? [] : {};
        targetObj[keys] = deepClone(source[keys]);
      }else{ // 如果不是,就直接賦值
        targetObj[keys] = source[keys];
      }
    }
  }
  return targetObj;
} 

 

... 拼接對象

let obj = {
    name: 'admin'
}

let obj2 = {
    age: 14,
    ...obj
}

console.log(obj2)     // { age: 14, name: 'admin' }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM