Object.assign(target, ...sources)
從一個(gè)或多個(gè)sources
對象中,復(fù)制所有自身可枚舉的屬性到target
對象中,并返回這個(gè)target
對象。
(1)拷貝Symbol
類型的屬性
var obj1={a:1};
var obj2={[Symbol('foo')]:2};
var obj=Object.assign({},obj1,obj2);
console.log(obj); // Object {a: 1, Symbol(foo): 2}
(2)繼承的巩那,或者非可枚舉屬性不會(huì)被復(fù)制
var obj1=Object.create({foo:1},{
bar:{
value:2 //不可枚舉吏夯,enumerable默認(rèn)為false
},
baz:{
value:3,
enumerable:true //可枚舉屬性
}
});
var obj=Object.assign({},obj1);
console.log(obj); // Object {baz: 3}
(3)原始值會(huì)包裝成對象
var obj=Object.assign({},'123',null,true,undefined,10,Symbol('foo'));
console.log(obj); // Object {0: "1", 1: "2", 2: "3"}
注:
null
和undefined
將被忽略,
這里即横,只有字符串類型的原始值包裝后具有可枚舉屬性噪生。