0

在这:

somefunction = function() {

    somefunction.method = function() {
         //stuff
    }
//other stuff
}

somefunction每次都执行是吗somefunction.method

4

3 回答 3

3

不,当您有以下任何行时,将执行 somefunction:

somefunction()
somefunction.call()
somefunction.apply()
new somefunction;

somefunction.method()只会执行somefunction.method,但可以访问范围内的somefunction变量(当然还有它自己的局部变量和所有全局变量)。

于 2012-06-02T02:17:26.370 回答
0

不是天生的(除非它在“其他东西”中明确调用)。它被评估了,但这只是 CPU 时间,还不够重要。

于 2012-06-02T02:14:58.570 回答
0

不。但是,每次调用 somefunction 时,您都会创建一个新的闭包。如果 somefunction 依赖于其范围之外的任何变量,那么 somefunction.method 可能会根据调用 somefunction 的时间而改变,从而产生竞争条件(调试起来并不有趣)。

这可能不是解决问题的正确方法。

考虑

somefunction = function() {
  // constructor
}


somefunction.prototype.method = function() {
  //stuff
}
于 2012-06-02T02:20:06.007 回答