【发布时间】:2010-05-10 20:42:46
【问题描述】:
假设我们有这段代码(暂时忘记原型):
function A(){
var foo = 1;
this.method = function(){
return foo;
}
}
var a = new A();
每次运行函数 A 时,是否重新编译内部函数?或者这样做更好(以及为什么):
function method = function(){ return this.foo; }
function A(){
this.foo = 1;
this.method = method;
}
var a = new A();
或者 javascript 引擎是否足够聪明,不会每次都创建一个新的“方法”函数?特别是 Google 的 v8 和 node.js。
此外,欢迎就何时使用哪种技术提出一般性建议。在我的具体示例中,使用第一个示例确实很适合我,但我知道外部函数会被实例化很多次。
【问题讨论】:
-
有趣的问题。不过,我愿意打赌 JavaScript 解释器比这更聪明。
-
说实话,如果您担心性能,这不应该是您的瓶颈。我不会担心的。
-
您想在一个私有变量上实现一个 getter,该变量不会在每个构造函数调用中复制?
-
不完全是。我只是想知道 javascript 引擎如何处理这种特殊情况。
标签: javascript performance closures