美文网首页
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拷贝的实现(沈拷贝和浅拷贝)

    1.自己封装函数(通过递归方法) 递归方法实现深度克隆原理:遍历对象、数组直到里边都是基本数据类型,然后再去复制,...

  • 浅拷贝和深拷贝

    本文参考:JavaScript中的浅拷贝和深拷贝js 深拷贝 vs 浅拷贝深入剖析 JavaScript 的深复制...

  • js浅拷贝和深拷贝

    javaScript的变量类型 javaScript的变量类型基本类型:引用类型: 浅拷贝和深拷贝的区分 浅拷贝浅...

  • 深入理解JavaScript中的堆与栈 、浅拷贝与深拷贝

    JavaScript中的浅拷贝与深拷贝 学了这么长时间的JavaScript想必大家对浅拷贝和深拷贝还不太熟悉吧,...

  • 五、面试总结(五)

    对象 拷贝(clone) 如何实现对象克隆 深拷贝和浅拷贝区别 深拷贝和浅拷贝如何实现激活机制 写clone()方...

  • 深拷贝、浅拷贝

    父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。 深拷贝同浅拷贝的区别:浅拷贝...

  • 面试题整理

    父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。 深拷贝同浅拷贝的区别:浅拷贝...

  • js深拷贝浅拷贝

    目录 一.数据类型 二.浅拷贝与深拷贝 三.赋值和浅拷贝的区别 四.浅拷贝的实现方式 五.深拷贝的实现方式 一.数...

  • js浅拷贝深拷贝

    js浅拷贝,深拷贝的简单实现 基础数据 浅拷贝 深拷贝

  • JavaScript深拷贝、浅拷贝

    JavaScript深拷贝、浅拷贝 浅拷贝:浅拷贝只是复制了内存地址,如果原地址中的对象改变了,浅拷贝出来的对象也...

网友评论

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

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