深拷贝的方法理解后写的

第1.2种方法:JSON方法和assign
缺陷:函数不能拷贝
注:两种方法混合实际上只有assign起作用,并且assign只能拷贝第一层,主要拷贝方法还是用递归比较好,通用!!!

let obj=Object.assign({},JSON.parse(JSON.stringify(obj)))

第3种 递归for in

function copy(resource){
  let result=resource instanceof Array?[]:{}
  for(key in resource){
    if(typeof resource[key]==="object"&&resource!==null){
    result[key]=copy(resource[key])}
    continue
}
    result[key]=resource[key]
return result
}

9.17日:工作中想用JSON转数组为字符串,结果转不了,这个问题到底是因为什么
11.19日经测试是正常使用的

 function isObject(obj){
    if(typeof obj!='object'||obj===null){
      return true
    }
  }
  function objectCopy(obj){
    let result=Array.isArray(obj)?[]:{};
    for (key in obj){
      if(typeof obj[key]==='object'&&obj[key]!=null){
        result[key]=objectCopy(obj[key])
      }else{
        result[key]=obj[key]
      }
    }
    return result
  }
  function merge(obj){
    if(isObject(obj)){
      return obj
    };
    let result=objectCopy(obj);
    return result
  }
  let result=merge({name:'xin',arr:[1,2,2,4]})
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值