es6_Object.assign(对象的合并)
目录
定义
object.assign
用于对象的合并,将源对象(source)的所有可枚举属性复制到目标对象(target)中
let targetObj = {
a: 1
};
let sourceObj1 = {
b: 2
};
let sourceObj2 = {
c: 3
};
Object.assign(targetObj, sourceObj1, sourceObj2);
console.log(targetObj); //a: 1 b: 2 c: 3
同名属性会相互覆盖,源对象后传入的会覆盖先传入的同名属性
let targetObj = {
a: 1
};
let sourceObj1 = {
a: 2
};
let sourceObj2 = {
a: 3
};
Object.assign(targetObj, sourceObj1, sourceObj2);
console.log(targetObj); //a: 3
接收非对象作为参数时,进行对象转换
console.log(typeof Object.assign(2));//object
undefined与null无法转换成对象,以它们作为参数会报错
- 将这两种数据类型作为target会报错,但是作为source不会报错
其它类型数据作为source,除了字符串会以数组形式传入,其它数据均无效果
let v1 = 'abc';
let v2 = 25;
let v3 = true;
let newObj = Object.assign({}, v1, v2, v3);
console.log(newObj); //0: "a" 1: "b" 2: "c"
属性名为Symbol值得属性也同样会被拷贝
Object.assign执行的是浅拷贝
对数组的处理
var arr1 = [1, 2, 3];
var arr2 = [4, 5];
Object.assign(arr1, arr2);
console.log(arr1); //0:4 1:5 2:3
这里将数组视为了属性名为0,1,2的对象,所以发生了同名属性值的替换。