Object spread(对象展开语法) vs. Object.assign区别

Object spread vs. Object.assign:
For the most part object reset and spread work the same way, the key difference is that spread defines properties, whilst Object.assign() sets them. This means Object.assign() triggers setters.

最主要的区别是Object.assign设置属性时会触发setter:

Object.assign(
    {
        set a(v) { this.b = v }, 
        b: 2
    }, 
    { a: 4 }
)
// { b: 4 }
{
    ...{
        set a(v){ this.b = v },
        b:2
    }, 
    ...{ a: 4 }
}
// { a: 4, b: 2 }

PS: 上面的 setter/getter 是字面量写法,与使用 Object.defineProperty() 来定义是一样的。,可参阅 《JavaScript 高级程序设计》P141 —— 访问器属性 这一小节。

posted @ 2019-09-04 15:43  晓风残月1994  阅读(661)  评论(0)    收藏  举报