美文网首页
图解 JS 浅拷贝与深拷贝

图解 JS 浅拷贝与深拷贝

作者: 夏海峰 | 来源:发表于2019-12-12 18:19 被阅读0次
    var obj1 = { a: 0 }
    
    obj1

    1、浅拷贝:obj2发生变化,obj1也发生变化。

    var obj2 = obj1
    obj2.a = 1
    console.log('obj1.a', obj1.a)  // 1
    console.log('obj2.a', obj2.a)  // 1
    
    obj2

    2、ES6扩展运算符,实现 深拷贝

    var obj3 = {...obj1}
    obj3.a = 2
    console.log('obj1.a', obj1.a)    // 1
    console.log('obj3.a', obj3.a)    // 2
    
    obj3

    3、Object.assign() 实现 深拷贝

    var obj4 = Object.assign({}, obj1)
    obj4.a = 3
    console.log('obj1.a', obj1.a)   // 1
    console.log('obj4.a', obj4.a)   // 3
    
    obj4

    深拷贝,新的对象发生变化,不会改变原对象。比如,Redux中的Reducer,在更新state状态时,就属于深拷贝。

    本篇结束!!!

    相关文章

      网友评论

          本文标题:图解 JS 浅拷贝与深拷贝

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