es6-Object.assign() 对象合并

var target = { a: 1 }; 目标对象
var source = { b: 2 }; 源对象
Object.assign(target, source); 第一个参数是目标对象,后面的都是源对象
target //{a:1, b:2}

var target = { a: 1, b: 1 };
var source1 = { b: 2, c: 2 };
var source2 = { c: 3 };
var source3 = “abc”

1.同名属性,后面的属性会覆盖前面的属性
Object.assign(target, source1, source2);
target //{a:1, b:2, c:3}

2.只有一个参数,Object.assign会直接返回该参数
Object.assign(target ) === obj // true

3.出现在目标对象位置的参数不是对象,先转成对象后返回,undefined和null不能转成对象会报错;
出现在源对象位置的参数先转换对象,如不能转换就跳过,undefined、null,数值、字符串和布尔值,都不会报错,字符串以数组形式,拷贝入目标对象

typeof Object.assign(2) // "object"
Object.assign(undefined) // 报错
Object.assign(target , undefined) === target // true undefined跳过

Object.assign(target , source3);
target //{0: "a", 1: "b", 2: "c", a: 1, b: 1} 字符串的包装对象,会产生可枚举属性

var target = { a: { b: 'c', d: 'e' } }
var source = { a: { b: 'hello' } }
Object.assign(target, source)
// { a: { b: 'hello' } }

Object.assign([1, 2, 3], [4, 5])
// [4, 5, 3]

你可能感兴趣的:(es6-Object.assign() 对象合并)