淺克隆

  • 直接將存儲在棧中的值賦值給對應變量,如果是基本數據類型,則直接賦值對應的值,如果是引用類型,則賦值的是地址
  const a = (obj) => {
    let qObj = {}
    for (let i in obj) {
        qObj[i] = obj[i]
    }
    return qObj;
  }

深克隆

  • 就是把數據賦值給對應的變量,從而產生一個與源數據不相干的新數據(數據地址已變化)。深拷貝,是拷貝對象各個層級的屬性
  const b = (obj) => {
    if (typeof obj === 'object') {
      var sObj = obj.constructor === Array ? [] : {};
      for (var i in obj) {
          sObj[i] = typeof (obj[i]) === 'object' ? b(obj[i]) : obj[i];
      }
    }else {
        var sObj = obj;
    }
  }