实现简易版深拷贝

function clone(obj, c = {}) {
  var c = c,
       test = Object.prototype.toString;

      for (var k in obj) {
        if (test.call(obj[k]) === '[object Object]' || test.call(obj[k]) === '[object Array]') {
          c[k] = test.call(obj[k]) === '[object Object]' ? {} : [];
          clone(obj[k], c[k])
        }else{
          c[k] = obj[k];
        } 
      }
  return c
}

更简单的方法使用ES6的Object.create,Object.create原理是把创建一个新对象,把新对象的原型指向传入的对象 ,所以使用object.create复制的对象是在原型链上的。

猜你喜欢

转载自www.cnblogs.com/zhubei/p/9037119.html