assign的用法
合并对象
const food = { color: 'blue'};
const clothes = { brand: 'Guess'};
const result = Object.assign({ companyName: "XYZ" }, food, clothes);
console.log(result);
//{companyName: "XYZ", color: "blue", brand: "Guess"}
克隆对象
let obj2 = Object.assign({}, obj1);
assign发挥的作用,就是将obj1的属性克隆到一个空对象(取决于obj1的数据类型)中,然后让obj2指向这个对象。
let obj1 = {
m: 1,
n: 2,
attr: {
name: 'Jack',
age: 18
}
}
let obj2 = Object.assign({}, obj1);
obj1.attr.name = 'Tom';
console.log( obj1.attr.name ); // Tom
console.log( obj2.attr.name ); // Tom
obj2.attr.name = 'Jarry';
console.log( obj1.attr.name ); // Jarry
console.log( obj2.attr.name ); // Jarry
可以看到,obj1与obj2的attr依旧是耦合的状态,所以,很明显assign做的就是浅克隆。