js 對象深拷貝函數


// 深拷貝函數封裝
    function deepCopy(obj) {
      // 根據obj的類型判斷是新建一個數組還是對象
      let newObj = Array.isArray(obj)? [] : {};
      // 判斷傳入的obj存在,且類型為對象
      if (obj && typeof obj === 'object') {
        for(key in obj) {
          // 如果obj的子元素是對象,則進行遞歸操作
          if(obj[key] && typeof obj[key] ==='object') {
            newObj[key] = deepCopy(obj[key])
          } else {
          // // 如果obj的子元素不是對象,則直接賦值
            newObj[key] = obj[key]
          }
        }
      }
      return newObj // 返回新對象
    }

    // 對象的深拷貝
    let obj1 = {
      a: '1',
      b: '2',
      c: {
        name: 'Demi'
      }
    }
    let obj2 = deepCopy(obj1) //將obj1的數據拷貝到obj2
    obj2.c.name = 'wilsunson'
    console.log(obj1) // {a: "1", b: "2", c: {name: 'wss'}}
    console.log(obj2) // {a: "1", b: "2", c: {name: 'wilsunson'}}

  


免責聲明!

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



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