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

2019-09-16  本文已影响0人  Angrybird233

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]
上一篇下一篇

猜你喜欢

热点阅读