美文网首页我爱编程
js实现通用深度克隆

js实现通用深度克隆

作者: 余尧鸟 | 来源:发表于2018-04-16 17:25 被阅读0次

    我们知道对于原始类型以及对象类型中的函数是可以直接通过“=”复制来实现克隆,而对于对象和数组,则需要遍历每一个元素,如果元素为对象或数组,则需继续遍历,直到为原始类型或函数,则直接通过“=”复制。

    function deepClone(obj){
        var result;
        var oClass=isClass(obj);
        if(oClass==="Object"){
            result={};
        }else if(oClass==="Array"){
            result=[];
        }else{
            return obj;
        }
        for(var key in obj){
           var copy=obj[key];
           if(isClass(copy)=="Object"){
               result[key]=arguments.callee(copy);//递归调用
            }else if(isClass(copy)=="Array"){
               result[key]=arguments.callee(copy);
            }else{
                result[key]=obj[key];
            }
        }
     return result;
    }
    
    //判断对象的数据类型
    function isClass(o){
        if(o===null) return "Null";
        if(o===undefined) return "Undefined";
        return Object.prototype.toString.call(o).slice(8,-1);
    }
    

    相关文章

      网友评论

        本文标题:js实现通用深度克隆

        本文链接:https://www.haomeiwen.com/subject/dzvekftx.html