美文网首页
javascript拷贝的实现(沈拷贝和浅拷贝)

javascript拷贝的实现(沈拷贝和浅拷贝)

作者: Angrybird233 | 来源:发表于2019-09-16 22:03 被阅读0次

    1.自己封装函数(通过递归方法)

        //实现深度克隆---对象/数组
        function deepClone(target){
            //判断拷贝的数据类型
            //初始化变量result 成为最终克隆的数据
            let result= Array.isArray(target)? [] : {};
            //遍历目标函数
            if(target&& typeof target==="object"){
            for(key in target){
                if(target.hasOwnProperty(key)){
                    //判断target子元素是否为对象,如果是,递归复制
                    if(target[key] && typeof(target[key])==="object"){
                        result[key] = deepClone(target[key]);
                    }else{
                        //如果不是,简单复制
                        result[key] = target[key];
                    }
                }
            }
        }
        return result;
        }
    

    递归方法实现深度克隆原理:遍历对象、数组直到里边都是基本数据类型,然后再去复制,就是深度拷贝

    1. 函数库lodash
    //安装
    npm install lodash --save 
    //执行
       var _ = require("lodash");
        var role1= {
            name:"Tom",
            age: 18,
            home: {city: 'shenZhen' }
        }
        var role2= _.cloneDeep(role1);
        console.info(role1=== role2); //false
    //这里的代码用到了require引用依赖,需要模块化打包(webpack/browserify ...)
    //npm i -g browserify
    //browserify [inputFile] -o [outFile]
    

    相关文章

      网友评论

          本文标题:javascript拷贝的实现(沈拷贝和浅拷贝)

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