【发布时间】:2015-11-14 03:04:39
【问题描述】:
假设我想要一个有 2 个字段的对象,a 和 b:
function createObject (a, b) {
return { a: a, b: b };
}
但是如果我想控制访问,比如让它只读,我可以使用闭包:
function createObject (aParam, bParam) {
var a = aParam, b = bParam;
return {
a: function () { return a; },
b: function () { return b; }
}
}
闭包方法需要多少额外的存储空间?以这种方式创建的每个对象是否都有这两个访问函数的唯一副本?
【问题讨论】:
-
当然它会使用更多的存储空间,因为对象具有检索不需要的值的功能。并且访问会更慢,因为函数调用比直接属性访问有更多的开销。但这是否会对性能产生任何实际影响是一个更重要的问题。
-
@RobG - 我倾向于担心鼠标移动事件处理程序中的对象分配,真的尽量避免让 GC 中断拖动或类似的事情。我不太担心函数调用的成本。
标签: javascript memory closures