TypeScript:使用spread运算符设置Object.prototype

时间:2018-03-05 13:13:30

标签: javascript typescript

使用spread运算符是一种简洁的方法来组合由其他对象属性的聚合组成的对象。

但是,使用扩展运算符设置对象的原型是否有简洁而高效的方法?

目前我有:

const result = Object.assign(Object.create(EmailCampaign.prototype), properties) 

。 。 。它将从数据库查询返回的属性扩展到具有EmailCampaign原型的对象。有没有办法用扩展运算符设置对象原型?

这是可能的:

const result = Object.setPrototypeOf({...properties}, EmailCampaign.prototype);

。 。但是,在实例化之后设置对象原型的性能是不可取的。我正在寻找另一种方式,如果存在的话。

1 个答案:

答案 0 :(得分:4)

使用Object.assign + Object.create是正确且高效的解决方案。你应该使用它。如果你想让它更简洁,可以使用一个结合两者的辅助函数。

也就是说,在对象文字上调用Object.setPrototypeOf不会 慢,因为该对象尚未在其他地方使用。

  

有没有办法用扩展运算符设置对象原型?

如果您想使用官方弃用的功能,可以在对象intialiser中使用__proto__ property

const result = {__proto__: EmailCampaign.prototype, ...properties};

是的,这是可能的,但我绝对不会推荐它。