语法
1
| Object.assign(target, ...sources)
|
Object.assign()
方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
拷贝一份 assign 用于(指向)生成新对象.可以用来合并对象
1 2 3 4 5 6 7
| var o1 = { a: 1 }; var o2 = { b: 2 }; var o3 = { c: 3 };
var obj = Object.assign(o1, o2, o3); console.log(obj); console.log(o1);
|
1 2 3 4 5 6 7
| var o1 = { a: 1, b: 1, c: 1 }; var o2 = { b: 2, c: 2 }; var o3 = { c: 3 };
var obj = Object.assign({}, o1, o2, o3); console.log(obj);
|
针对深拷贝,需要使用其他方法
因为 Object.assign()拷贝的是属性值 , 继承属性和不可枚举属性是不能拷贝的
1 2 3 4 5 6
| const c = {t: 1, p: 'gg'}; const d = deepCopy(c); d.t = 3; console.log(c); console.log(d);
|
用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| const defaultOpt = { title: 'hello', name: 'oo', type: 'line' };
const opt1 = deepCopy(a); opt1.title = 'opt1'; opt1.type = 'bar'; opt1.extra = 'extra';
const opt2 = Object.assign({}, a, { title: 'opt2', type: 'bar', extra: 'extra' });
|