美文网首页
js浅拷贝与深拷贝

js浅拷贝与深拷贝

作者: 贵贵贵子 | 来源:发表于2021-07-05 14:51 被阅读0次
let obj = {
    a: 1,
    b: 2,
    c: [1, 2, 3],
    d: {
        a: 1,
        b: 2,
        c:{
        d:1
        }
    }
}
//浅拷贝
let shallowObj = obj
console.log(shallowObj)//打印obj
/**如果改变shallowObj的属性,obj属性也会跟着更改,因为对象是引用类型,直接赋值会将shallowObj指向obj引用地址而非再开辟一个新的栈,所以改变
 * shallowObj属性引用地址属性也会变化则obj的值也会跟着变化
*/
shallowObj.a=2
console.log(obj.a)//2

//深拷贝
function deepClone(target) {
    if(target===null || typeof target !="object") return target
    let cloneObj =Array.isArray(target)?[]:{}
    for(let i in target){
      cloneObj[i] = deepclone(target[i])
    }
    return cloneObj
}
// 因为是创建了一个新的对象,所以deepObj改变不会影响obj的变化
let deepObj = deepClone(obj)
deepObj.d.c.d = 2
console.log(obj.d.c.d)//1

相关文章

  • JS中的深拷贝与浅拷贝

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

  • js浅拷贝深拷贝

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

  • 浅拷贝和深拷贝

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

  • js面试题

    1,js的深拷贝与浅拷贝 如何区分深拷贝与浅拷贝,简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,...

  • JS实现深拷贝、instanceof、判断是否为数组

    JS深拷贝 JS中拷贝对象可以按照拷贝的程度可以分为浅拷贝和深拷贝,有些时候我们需要拷贝之后的对象和拷贝之前的对象...

  • JS中对象的复制

    JS中的对象复制分为两种情况:深拷贝和浅拷贝。深拷贝和浅拷贝的区别在于对数组和对象的拷贝,对它们拷贝时浅拷贝只是拷...

  • 认识js下的浅拷贝与深拷贝

    浅拷贝与深拷贝 首先深拷贝和浅拷贝只针对像 Object, Array 这样的复杂对象的。简单来说,浅拷贝只拷贝一...

  • iOS深拷贝(MutableCopy)与浅拷贝(Copy)的区别

    深拷贝和浅拷贝的概念 iOS中有深拷贝和浅拷贝的概念,那么何为深拷贝何为浅拷贝呢?浅拷贝:浅拷贝并不拷贝对象本身,...

  • Objective-C中的浅拷贝和深拷贝

    Objective-C中的浅拷贝和深拷贝IOS开发之深拷贝与浅拷贝(mutableCopy与Copy)详解iOS ...

  • 深拷贝和浅拷贝

    干货!深拷贝和浅拷贝的区别 深拷贝才是拷贝,浅拷贝就是Retain Copy与Retain的区别 Copy: 根据...

网友评论

      本文标题:js浅拷贝与深拷贝

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