之前有写过用this.set可以及时更新数据,除了这个方法还可以用Object.assign(target,sources)方法下面将介绍一下这个用法先看不用this.set可以及时更新数据,除了这个方法还可以用Object.assign(target, sources)方法 下面将介绍一下这个用法 先看不用this.set可以及时更新数据,除了这个方法还可以用Object.assign(target,sources)方法下面将介绍一下这个用法先看不用this.set用Object.assign(target, sources)方法的例子
原因是使用了这个方法为对象添加属性后,他的身上就多了get和set方法,所以再次操作该属性的时候,视图就会及时更新了。
Object.assign()用法讲解
语法: Object.assign(target, …sources) target: 目标对象,sources: 源对象
用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };
const returnedTarget = Object.assign(target, source);
console.log(target); // Object { a: 1, b: 4, c: 5 }
console.log(returnedTarget); // Object { a: 1, b: 4, c: 5 }
注意:
Object.assign方法的第一个参数是目标对象,后面的参数都是源对象。
还有就是Object.assign方法实行的是浅拷贝,而不是深拷贝。也就是说,如果源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象的引用。
用法:
- 复制一个对象;
const obj = { a: 1 };
const copy = Object.assign({}, obj);
console.log(copy); // { a: 1 } - const o1 = { a: 1 };
const o2 = { b: 2 };
const o3 = { c: 3 };
const obj = Object.assign(o1, o2, o3);
console.log(obj); // { a: 1, b: 2, c: 3 }
console.log(o1); // { a: 1, b: 2, c: 3 }, 注意目标对象自身也会改变。
3. 合并具有相同属性的对象:
const o1 = { a: 1, b: 1, c: 1 };
const o2 = { b: 2, c: 2 };
const o3 = { c: 3 };
const obj = Object.assign({}, o1, o2, o3);
console.log(obj); // { a: 1, b: 2, c: 3 },注意属性被后续参数中具有相同属性的其他对象覆盖