Object.assign(target, ...sources)
从一个或多个sources
对象中,复制所有自身可枚举的属性到target
对象中,并返回这个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)继承的,或者非可枚举属性不会被复制
var obj1=Object.create({foo:1},{
bar:{
value:2 //不可枚举,enumerable默认为false
},
baz:{
value:3,
enumerable:true //可枚举属性
}
});
var obj=Object.assign({},obj1);
console.log(obj); // Object {baz: 3}
(3)原始值会包装成对象
var obj=Object.assign({},'123',null,true,undefined,10,Symbol('foo'));
console.log(obj); // Object {0: "1", 1: "2", 2: "3"}
注:
null
和undefined
将被忽略,
这里,只有字符串类型的原始值包装后具有可枚举属性。
网友评论