作者:-孙立佳得 | 来源:互联网 | 2023-01-16 11:10
MDN对于修改代码中的原型有一个巨大的可怕警告:
根据[[Prototype]]
现代Javascript引擎如何在每个浏览器和Javascript引擎中优化属性访问,非常慢的操作,改变对象的性质.对改变继承的性能的影响是微妙和遥远的,并不仅仅局限于在Object.setPrototypeOf(...)
语句中花费的时间,而是可以扩展到任何可以访问任何[[Prototype]]
已被更改的对象的代码
.如果您关心性能,则应避免设置[[Prototype]]
对象.而是[[Prototype]]
使用所需的使用创建一个新对象Object.create()
.
- MDN> Javascript> Object.setPrototypeOf()
我想知道是否有任何情况你可以修改对象的原型而不会导致级联的优化效果,从而破坏程序的性能.好像应该有.例如,如果您只是在创建对象之后(以及在其他任何东西使用之前)修改原型.但我想这是依赖引擎的.
那么有谁知道是否有有效的方法来修改对象的原型?
编辑:这个问题的动机来自于创建实际继承的对象的愿望Function
.我知道如何做到这一点的唯一方法是修改函数的原型.请参阅Raynos答案的最底部:Javascript类继承自Function类