deepCopy深拷贝

function deepCopy(p,c){
            var c = c || {};
            for ( var i in p ){
                //确保属于自己的属性
                if ( p.hasOwnProperty( i ) ){
                    //判断属性是否为对象
                    if ( typeof p[i] === 'object' ){
                        //ES3没有isArray()方法,兼容写法
                        if (typeof Array.isArray !== 'function' ){
                            Array.isArray = function( candidate ){
                                return Object.prototype.toString.call( candidate ) === '[object Array]';
                            }
                            //如果是数组创建新数组,如果不是创建新对象
                            c[i] = Array.isArray( p[i] ) ? [] : {};
                        }else {
                            c[i] = Array.isArray( p[i] ) ? [] : {};
                        }
                        //通过递归,进行再一次遍历,直到typeof p[i]不是对象,然后逐层返回
                        deepCopy(p[i], c[i]);
                    }else {
                        c[i] = p[i];
                    }
                }
            }
            return c;
        };
原文地址:https://www.cnblogs.com/jokes/p/10516827.html