对JS深拷贝浅拷贝的理解

这篇文章写得很好:

https://www.cnblogs.com/echolun/p/7889848.html

 

总结:1.深拷贝浅拷贝只有在拷贝引用类型的时候才有这个概念。2在实际工作中,深拷贝的考虑是无处不在的,在拷贝对象的时候,一般无论目前是一层引用,还是引用里面还有引用,都直接用深拷贝。3.

JSON.stringify,JSON.parse这种方法使用起来很简单。对比直接写deepClone的方法,哪种更好?目前暂时不清楚。有更多简介的欢迎留言啊。

深拷贝方法:深拷贝性能消耗比较大,比较少用

var deepCopy = function (extendObj) {
    if (typeof extendObj !== 'object' || extendObj === null) {
        return extendObj;
    } else {
        var newObj = extendObj.constructor === Array ? [] : {}
        if (JSON) {
            newObj = JSON.parse(JSON.stringify(extendObj));
        } else {
            for (let key in extendObj) {
                if (extendObj.hasOwnProperty(key)) {
                    newObj[key] = typeof extendObj[key] === 'object' ?
                        deepCopy(extendObj[key]) : extendObj[key];
                }

            }
        }
    }
    return newObj;
};

浅拷贝:实际项目中,经常用到的就是浅拷贝

function easyCopy(extendObj) {
    if (typeof extendObj !== 'object' || extendObj === null) {
        return extendObj;
    }else {
        var tempObj = obj.constructor === 'Array'? [] : {}
        if(tempObj == []){
            for (let i = 0,len = obj.length; i < len; i++) {
                tempObj[i] = obj[i]
            }
        }else {
            for (let key in obj) {
                if (obj.hasOwnProperty(key)) {
                    tempObj[key] = obj[key]
                }
            }
        }
    }
    return tempObj
}

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值