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 —— 访问器属性 这一小节。

猜你喜欢

转载自www.cnblogs.com/nicholaswang/p/11459523.html
今日推荐