js中assign的用法

29 阅读1分钟

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做的就是浅克隆