[JavaScript] Object.assign

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"}

注:
nullundefined将被忽略,
这里,只有字符串类型的原始值包装后具有可枚举属性。

你可能感兴趣的:([JavaScript] Object.assign)