javascript深复制

本文介绍了三种不同的JavaScript实现深拷贝的方法:使用递归、构造函数和原型链。每种方法都有详细的代码示例,展示了如何对各种类型的数据进行复制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

function clone(obj){
  var o;
  switch(typeof obj){
    case 'undefined':break;
    case 'string':o=obj+'';break;
    case 'number':o=obj-0;break;
    case 'boolean':o=obj;break;
    case 'object':
      if(obj==null){
        o=null;
      } else {
        if(obj instanceof Array){
          o=[];
          for(var i=0,len=obj.length;i<len;i++){
            o.push(clone(obj[i]));
          }
        } else {
          o={};
          for(var k in obj){
            o[k]=clone(obj[k]);
          }
        }
      }
      break;
      default:
      o=obj;break;
  }
  return o;
}
function clone2(obj){
  var o,obj;
  if(obj.constructor==Object){
    o=new obj.constructor();
  } else {
    o=new obj.constructor(obj.valueOf());
  }
  for(var key in obj){
    if(o[key]!=obj[key]){
      if(typeof(obj[key])=='object'){
        o[key]=clone2(obj[key]);
      } else {
        o[key]=obj[key];
      }
    }
  }
  o.toString=obj.toString;
  o.valueOf=obj.valueOf;
  return o;
}
function clone3(obj){
    function Clone(){}
    Clone.prototype = obj;
    var o = new Clone();
    for(var a in o){
        if(typeof o[a] == "object") {
            o[a] = clone3(o[a]);
        }
    }
    return o;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值