原生js实现对象和数组等所有数据类型的深度克隆

代码如下

function deepClone(origin, target) {
  var target = target || {};
  for (var prop in origin) {
    var typ = Object.prototype.toString.call(origin[prop]);
    if (typeof origin[prop] != "object" || origin[prop] + "" == "null") {
      target[prop] = origin[prop];
    } else if (typ.indexOf("Array") != -1 || typ.indexOf("Object") != -1) {
      if (typ.indexOf("Array") != -1) {
        target[prop] = [];
      } else if (typ.indexOf("Object") != -1) {
        target[prop] = {};
      }
      deepClone(origin[prop], target[prop]);
    } else {
      var funStr = typ.slice(8, typ.length - 1);
      console.log(funStr, origin[prop]);
      target[prop] = eval("new " + funStr + "(origin[prop])")
    }
  }
  return target;
}

博主联系方式:

  • 微信:34419369
  • QQ: 34419369
  • 公众号:前方录
  • 有什么不懂的地方欢迎联系我,帮到你是我会很开心

Leave a Reply

邮箱地址不会被公开。 必填项已用*标注