javascript - js 内存组织 - 闭包与对象?

标签 javascript performance object closures

当我使用 JS 进行开发时,我经常面临使用内部函数(闭包)捕获变量和使用对象之间的选择。

内部函数:

var x = ...;
var f = function() {
    // use x here
}

对象:

obj.x = ...;
obj.f = function() {
    // use x here
}

内部函数方法“感觉”更自然,但我想知道 - 是否需要担心以某种方式执行此操作会对性能产生影响,以及执行此类操作最惯用的方法是什么?

最佳答案

在 PC 平均拥有 8GB RAM 的时代,闭包与对象属性的内存使用似乎无关紧要。无论如何,在一个不平凡的应用程序中,仅使用闭包或仅使用属性值是极不可能有意义的。

如果您有一个代码模块,则对仅由该模块的方法内部使用的变量使用闭包是有意义的。使用需要在模块之间共享的值的属性而不需要使用 getter 和 setter 也是有意义的(例如,您想要使用 obj.property 而不是 obj.getProperty() )。

此外,属性访问比使用函数检索值要高效得多,但 getter 和 setter 可以提供比简单读取或分配值更重要的功能(例如值验证和完整性检查)。

一如既往,根据任何合适的标准(速度、代码可维护性、稳健性、跨浏览器支持等)使用适合您的应用程序的内容。

关于javascript - js 内存组织 - 闭包与对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17331828/

相关文章:

javascript - Angularjs 重新加载页面内容而不实际重新加载页面

Java性能: private static final String vs local String ?堆空间中创建的对象数量

python - timeit 和它的 default_timer 完全不同意

flash - AS3 : Impossible to copy DisplayObjects with content?

javascript - 将 JSON 映射到对象

javascript - jQuery 处理复选框组

java - 使用 javascript 或 java 从 html 页面运行控制台应用程序?

javascript - 为什么我需要将代码包装在立即调用的函数表达式中?

r - 如何在 R 中为 Monte Carlo 创建更有效的模拟循环

javascript - 将键值(对象)对添加到数组中的所有对象