美文网首页
js实现深拷贝

js实现深拷贝

作者: 5cc9c8608284 | 来源:发表于2022-07-12 15:07 被阅读0次

1.官方新推出的structuredClone方法,可以直接实现对一个对象的深拷贝,首选,兼容性还不是很友好,IE目前还没有支持
2.递归实现深拷贝

//函数拷贝
const copyObj = (obj = {}) => {
    //变量先置空
    let newobj = null;

    //判断是否需要继续进行递归
    if (typeof (obj) == 'object' && obj !== null) {
        newobj = obj instanceof Array ? [] : {};
        //进行下一层递归克隆
        for (var i in obj) {
            newobj[i] = copyObj(obj[i])
        }
        //如果不是对象直接赋值
    } else {
        newobj = obj
    }

    return newobj;
}

let o1 = {
    name: 'o1',
    friends: {
        name: 'Ann'
    }
}
let o2 = copyObj(o1);
console.log(o2.friends == o1.friends); //false

3.使用JSON.stringify将对象转换为字符串,然后再通过JSON.parse还原对象

这个方法要慎重使用,它在处理date对象和NaN,undefined和null还有函数类型的时候,会出错,具体可以参考这篇文章

4.使用lodash的cloneDeep方法

相关文章

  • js浅拷贝深拷贝

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

  • JS 中深拷贝的几种实现方法

    JS 中深拷贝的几种实现方法 1、使用递归的方式实现深拷贝 方法二 2、通过 JSON 对象实现深拷贝 缺点 (1...

  • Javascript中的深拷贝

    JS 中深拷贝的几种实现方法 1、使用递归的方式实现深拷贝 //使用递归的方式实现数组、对象的深拷贝 functi...

  • JS深拷贝的实现

    JS深拷贝, 即传值拷贝, 需要新建一处内存,实现拷贝,具体实现如下: //ES5深拷贝 (1)循环递归: fun...

  • js 实现深拷贝

    一般不会深拷贝函数等,所以一般用递归和JSON方法即可。 如果要实现函数等拷贝,比较完美的做法: function...

  • js实现深拷贝

    一、js数据类型 基本数据类型:String、Number、Boolean、Null、Undefined复杂数据类...

  • 手撕常见面试题

    DOM 事件代理 数组 对象 扁平化 去重 - unique() 拷贝 浅拷贝 深拷贝 copy()函数实现 JS...

  • JS中的深拷贝与浅拷贝

    知乎:js中的深拷贝和浅拷贝? 掘金: js 深拷贝 vs 浅拷贝 前言 首先深拷贝与浅拷贝只针对 Object,...

  • 2020前端高频面试题总结(附答案)

    [ js基础题 ] 1. new的实现原理是什么? 2. 深拷贝和浅拷贝的区别是什么 深拷贝 浅拷贝 3. bin...

  • iOS基础知识点(网络摘抄)

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

网友评论

      本文标题:js实现深拷贝

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