美文网首页前端架构一个
一个例子 - 看尽JS的深度克隆

一个例子 - 看尽JS的深度克隆

作者: Jason_Zeng | 来源:发表于2019-07-08 23:04 被阅读0次
  1. 在JS中的等于号都是把对象的地址引用了,所有普通的赋值或者是Object.assign都是浅克隆,那么怎么深克隆呢
  2. 基本思想就是遍历对象,一个一个赋值
  3. 遇到对象或者数组的化递归
function deepClone(parent, child) {
    child = child || {};
    for (const key in parent) {
        if (parent.hasOwnProperty(key)) {
            let item = parent[key];
            if (typeof item === "object") {
                child[key] = Object.prototype.toString.call(item) === "[object Array]" ? [] : {};
                deepClone(item,child[key],);
            } else {
                child[key] = item;
            }
        }
    }
    return child;
}

let a = {a:1,b:{c:3,d: [6,5,4,3]}}
let b = {};
 b = deepClone(a,b);
console.log(a,b)

这里有几个点需要注意以下

在遍历目标对象的时候,首先需要属性是不是对象,不是的话,证明是基本类型对不,那么就可以直接赋值了,因为基本类型在内存中的栈里存的就是真实值
如果是对象或者数组的化,那么需要递归调用这个对象,直到是基本类型为止

相关文章

  • 一个例子 - 看尽JS的深度克隆

    在JS中的等于号都是把对象的地址引用了,所有普通的赋值或者是Object.assign都是浅克隆,那么怎么深克隆呢...

  • js克隆

    实现 js 深度克隆 执行结果如下:

  • js深度克隆

  • js深度克隆

    在JAVAScript中数据类型分为两种,一种是原始数据类型,另外一种就是引用数据类型。 数据类型 原始数据类型:...

  • JS 深度克隆

    想要克隆一个对象或数组,如果只是普通的赋值,那么只是复制了浅层,深层的引用值其实指向的是同一块内存。 JSON克隆...

  • 一个例子-看尽JS继承

    一个系列: 一个列子看尽一个知识点 1. 首先我们来个简单的,ES6中写一个继承 是不是非常的开心,这是在写C#吗...

  • js的浅克隆和深度克隆

    听到这个名字的时候都被吓尿了。克隆听起来就很屌的样子。不过其实琢磨了一下根本没有什么好尿的——我特别讨厌一些人故作...

  • js的浅克隆与深度克隆

    克隆 普通克隆 深度克隆

  • js代码题

    js对象的深度克隆 js数组去重 js常用设计模式的实现思路,单例,工厂,代理,装饰,观察者模式等

  • js对象深度克隆

    通用克隆方法 第一种方法简单粗暴,先将对象序列化再解析回来,不过要注意对象中如果有函数function则不能正确复...

网友评论

    本文标题:一个例子 - 看尽JS的深度克隆

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