对象副本的拷贝

因为对象的值都是引用,当按照下面的方法复制时:

var obj = {'name':'Tom','age':12}
var copyObj = obj

obj和copyObj都是同一个基对象的引用,因此改变的值都是基对象的值:

copyObj.age = 15
console.log(obj.age)         ------>15

希望copyObj的改变不影响obj则需要创建一个obj的副本:

if (Array.isArray(obj)) {
    //如果对象是一个数组,那么利用数组的slice或concat方法
    copyObj = obj.slice()
    // copyObj = obj.concat()
}else{
    //如果对象不是数组
    copyObj = new Object()
    //1.第一种方法:遍历对象,挨个复制
    for(var key in obj){
        copyObj[key] = obj[key]
    }
    //2.第二种方法:将对象序列化再解析回来(注意:如果对象中有function不能正确复制)
    copyObj = JSON.parse(JSON.stringify(obj))
}

 

转载于:https://www.cnblogs.com/zhoulixue/p/6927733.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值