首页 > 其他 > 详细

深拷贝的实现方法

时间:2020-03-30 19:03:47      阅读:81      评论:0      收藏:0      [点我收藏+]

1、json方法

var cloneObj=JSON.parse(JSON.stringify(obj));

不足:1、无法拷贝 对象中的方法属性  2、无法拷贝 对象中值为undefined的属性

2、jquery方法

jQuery.extend(true,{},obj);  //true为深拷贝,false为浅拷贝,其实是把第二个对象上面的属性和对象覆盖到第一个对象上面

不足:1、需要引用jQuery库  2、无法拷贝 对象中值为undefined的属性

3、使用递归实现的方式

//使用递归实现深拷贝函数
function deepClone(obj) {
    var objClone = Array.isArray(obj) ? [] : {}
    if (obj && typeof obj === object) {
        for (key in obj) {
            if (obj.hasOwnProperty(key)) {
            //判断obj的子元素是否为object对象,如果是则就递归拷贝
                if (obj[key] && typeof obj[key] === object) {
                    objClone[key] = deepClone(obj[key])
                } else {
                    //如果不为对象就直接拷贝
                    objClone[key] = obj[key]
                }
            }
        }
    }
    return objClone
}

不足:代码比其他两种方式复杂。

 

深拷贝的实现方法

原文:https://www.cnblogs.com/ZJTL/p/12600217.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!