使用spread运算符是一种简洁的方法来组合由其他对象属性的聚合组成的对象。
但是,使用扩展运算符设置对象的原型是否有简洁而高效的方法?
目前我有:
const result = Object.assign(Object.create(EmailCampaign.prototype), properties)
。 。 。它将从数据库查询返回的属性扩展到具有EmailCampaign
原型的对象。有没有办法用扩展运算符设置对象原型?
这是可能的:
const result = Object.setPrototypeOf({...properties}, EmailCampaign.prototype);
。 。但是,在实例化之后设置对象原型的性能是不可取的。我正在寻找另一种方式,如果存在的话。
答案 0 :(得分:4)
使用Object.assign
+ Object.create
是正确且高效的解决方案。你应该使用它。如果你想让它更简洁,可以使用一个结合两者的辅助函数。
也就是说,在对象文字上调用Object.setPrototypeOf
不会 慢,因为该对象尚未在其他地方使用。
有没有办法用扩展运算符设置对象原型?
如果您想使用官方弃用的功能,可以在对象intialiser中使用__proto__
property:
const result = {__proto__: EmailCampaign.prototype, ...properties};
是的,这是可能的,但我绝对不会推荐它。