在 JavaScript 中通过原型与构造函数定义方法的性能影响
在 JavaScript 中,存在两种使用公共函数创建“类”的方法:使用原型或构造函数。方法 1 通过构造函数将函数分配给实例,而方法 2 利用原型在所有实例之间共享函数。
虽然方法 2 通常被认为更高效,但剥夺实例的私有实例变量是一个显着的缺点。然而,方法 1 为每个实例明显创建重复的函数副本在实践中真的发生了吗?
来自 JsPerf Benchmark 的经验证据
JsPerf 基准测试表明方法 2(原型) )在速度方面确实优于方法 1(构造函数)。
实际影响
虽然这种差异在基准测试中很明显,但其在实际应用中的相关性值得怀疑。即使在具有大量对象实例化的场景中(例如,每帧 10,000 个),这种微优化也不太可能缓解性能瓶颈。
建议
如果优化性能至关重要,建议通过原型声明方法。除此之外,方法 1 提供了更大的灵活性并遵循常见的面向对象编程约定。此外,使用下划线前缀表示的私有属性(例如 _process())可以增强封装性并阻止直接修改。
以上是在 JavaScript 中通过构造函数定义方法是否会创建重复的函数副本?的详细内容。更多信息请关注PHP中文网其他相关文章!