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'}}
相关文章
相关标签/搜索