”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 在 JavaScript 中通过构造函数定义方法是否会创建重复的函数副本?

在 JavaScript 中通过构造函数定义方法是否会创建重复的函数副本?

发布于2024-11-14
浏览:200

Does Defining Methods via Constructor in JavaScript Create Duplicate Function Copies?

JavaScript 中通过原型与构造函数定义方法的性能影响

在 JavaScript 中,存在两种创建具有公共函数的“类”的方法:使用原型或构造函数。方法 1 通过构造函数将函数分配给实例,而方法 2 利用原型在所有实例之间共享函数。

虽然方法 2 通常被认为更高效,但剥夺实例的私有实例变量是一个显着的缺点。然而,方法 1 为每个实例明显创建的重复函数副本在实践中确实发生了吗?

来自 JsPerf Benchmark 的经验证据

JsPerf 基准测试表明方法 2(原型) )在以下方面确实优于方法 1(构造函数)

实际影响

虽然这种差异在基准测试中很明显,但其在实际应用中的相关性值得怀疑。即使在具有大量对象实例化的场景中(例如,每帧 10,000 个),这种微优化也不太可能缓解性能瓶颈。

建议

如果优化性能至关重要,建议通过原型声明方法。除此之外,方法 1 提供了更大的灵活性并遵循常见的面向对象编程约定。此外,使用下划线前缀表示的私有属性(例如 _process())可以增强封装性并阻止直接修改。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3