深拷贝的实现方法

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
}

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

 

猜你喜欢

转载自www.cnblogs.com/ZJTL/p/12600217.html