一直误解了Object.assign({})

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

举例子:

const  obj = { name: '', type:1 };

const obj2 = Object.assign({}, obj, {name: '2'});

那么 obj2 就会覆盖obj 的name 但是不会改变原有obj 的值。

如果在 obj 的基础上增加一个对象,看例子:

obj.typeObj = { age: 12 };

const obj3 = Object.assign({}, obj);

当我们改变 obj时, 会发生什么变化?

我们来改变一下

obj.typeObj.age = 15 

consle.log(obj3.typeObj.age)    // 结果是   15 

一直以为它是一个深拷贝。。。无知的我。

如果需要深度拷贝还是用 JSON.parse(JSON.stringfy(obj)) 先把对象转成字符串,再转成对象。

你可能感兴趣的:(一直误解了Object.assign({}))