神奇的Object.assign()

Object.assign() 方法用于将所有可枚举的属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。

1、Object.assign()可以在对象为一层的时候,实现简单的“深拷贝功能”

 

var obj1 = {a:'1',b:'2'} var obj2 = Object.assign({}, obj1 ) obj2.a = '3' console.log(obj1) // {a:'1',b:'2'} console.log(obj2)  //{a:'3',b:'2'}   当被可枚举属性为一层的对象时,使用Object.assign可以实现简单的‘深拷贝’功能,不会改变obj1的数据  

2、Object.assign()可以在对象为两层或者多层的时候,此时第一种的“深拷贝功能”便无法继续使用。

var obj1 = {name:{a:'1',b:'2'}}
var obj2 = Object.assign({}, obj1 )
obj2 .name.a = '4'
console.log(obj1 )   //name: {a: 4, b: '2'}

console.log(obj2 )   //name: {a: 4, b: '2'}

  当被可枚举属性为多层的对象时,使用Object.assign可以复制obj1的内容,但是会改变obj1的数据  

 

上一篇:js的垃圾回收机制


下一篇:彻底搞懂深拷贝与浅拷贝