JS实现深拷贝

深拷贝递归 


function deepCopy(p){
    var c = arguments[1] ? arguments[1] : {};
    for(var i in p){
        //过滤p对象中不属于自己的属性
        if(p.hasOwnProperty(i){
            //typeof判断对象时,需要排除下基本数据类型null
            if(typeof p[i] === 'object' && p[i] !== null){
                //通过判断拷贝的元素是否为数组,决定拷贝类型
                c[i] = Array.isArray(p[i]) ? [] : {};
                deepCopy(p[i], c[i]);
            } else {
                c[i] = p[i];
            }
        }
    }
    return c;
}
//判断数组的方法
function isArray(obj){
    return Object.prototype.toString.call(obj) === '[object Array]'
}

 

你可能感兴趣的:(JavaScript)