js实现通用深度克隆

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

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);
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 5,449评论 0 21
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,394评论 0 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,303评论 19 139
  • 树立正确的理财观念,是开启投资理财的第一步。接着,我们要积累人生的第一桶金,正式进入理财阶段。对于大部分人而言,积...
    柠檬Jane阅读 182评论 0 0
  • 梅丽,小时候的玩伴,非常乐观、坚强的女孩。 她妈妈在她初三那年开始生病,家里的存储钱都花得精光,村里人还众筹捐款来...
    慢就是快的追梦女孩阅读 358评论 0 0

友情链接更多精彩内容