本文主要参考了MDN关于Object构造函数自带方法的讲解。
syntax:Object.assign(target, ...sources)
将所有可枚举属性的值从一个或多个源对象复制到目标对象,并返回目标对象。
(源对象会从后至前,逐级覆盖具有相同键名的属性)
Object.assign({
a:2},{
a:1,b:2}) // {a: 1, b: 2}
Object.assign({
},{
a:2},{
a:4}) // {a: 4}
Object.assign({
a:1}, {
b:2}, {
b:4}, {
}) // {a: 1, b: 4}
描述
Object.assign 方法只会拷贝源对象自身的可枚举属性到目标对象。
(换言之,继承属性和不可枚举属性不能被拷贝)
该方法使用源对象的getter和目标对象的setter,来复制、分配、定义属性。
String类型和 Symbol 类型(ES5不支持)的属性都会被拷贝。
在出现错误的情况下,例如,如果属性不可写,会引发TypeError,如果在引发错误之前添加了任何属性,则可以更改target对象。
Object.assign() 不会在那些source对象值为 null 或 undefined 的时候抛出错误。
用法
- 复制对象(但不是深拷贝)
let obj = {
a: '我是值属性',
b: {
c: '我是对象引用属性'
}
}
let obj2 = Object.assign(