JavaScript深度拷貝

經(jīng)過驗證,可以以后直接拿著使用的使用

function cloneDeep (source) {
  if (!isObject(source)) {
    return source;
  }
  var target = Array.isArray(source) ? [] : {};
  for (var key in source) {
    if (Object.prototype.hasOwnProperty.call(source, key)) {
      if (isObject(source[key])) {
        target[key] = cloneDeep2(source[key]);
      } else {
        target[key] = source[key];
      }
    }
  }
  return target;
}

驗證

// 測試用例
var a = {
  name: "muyiy",
  book: {
      title: "You Don't Know JS",
      price: "45"
  },
  a1: undefined,
  a2: null,
  a3: 123
}
var arr = [
  {
    a: 123,
    c: {v: 1}
  },
  {
    a: 456,
    c: {v: 2}
  },
];
var b = cloneDeep(a);
var d = cloneDeep(arr);
a.name = 'i am s';
a.book.price = 1000;
console.log('b', b);
console.log('d', d);
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容