美文网首页
js中的{}与[]的深度克隆

js中的{}与[]的深度克隆

作者: 她与星河皆遗憾 | 来源:发表于2021-09-27 16:20 被阅读0次

数组与对象直接克隆,克隆类中的数组只是获得了原始类中的数组指向。原始类和克隆类中的数组指向同一个空间,当你需要操作克隆类中的数组时,原始类的数组也会跟着改变。

deepClone (obj) {
    // 对常见的“非”值,直接返回原来值
    if([null, undefined, NaN, false].includes(obj)) {
        return obj;
    }
    // 原始类型直接返回
    if(typeof obj !== "object" && typeof obj !== 'function') {
        return obj;
    }
    // 判断是数组还是对象
    var o = Object.prototype.toString.call(obj) === '[object Array]' ? [] : {};
    for(let i in obj) {
         // 判断所得的属性是否是自身的属性,不能使用原型链上的属性
        if(obj.hasOwnProperty(i)){
            // 判断是原始值还是对象值,然后循环递归
            o[i] = typeof obj[i] === "object" ? deepClone(obj[i]) : obj[i];
        }
    }
    return o;
}

相关文章

  • js中的{}与[]的深度克隆

    数组与对象直接克隆,克隆类中的数组只是获得了原始类中的数组指向。原始类和克隆类中的数组指向同一个空间,当你需要操作...

  • js的浅克隆与深度克隆

    克隆 普通克隆 深度克隆

  • js克隆

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

  • js浅度克隆 与 深度克隆

    浅层克隆:当克隆引用值时,两个对象会共用一个引用地址,造成相互的干扰,即我改,它也改。 深层克隆深层克隆:克隆出来...

  • js深度克隆

  • js深度克隆

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

  • JS 深度克隆

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

  • js的浅克隆和深度克隆

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

  • JS类型判断与深度克隆

    要进行深度克隆,首先就需要知道进行克隆的这个变量是什么类型的值,知道了是什么类型的,我们才能分门别类的去根本不同的...

  • js代码题

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

网友评论

      本文标题:js中的{}与[]的深度克隆

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