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状态时,就属于深拷贝。
本篇结束!!!
网友评论