在这:
somefunction = function() {
somefunction.method = function() {
//stuff
}
//other stuff
}
somefunction
每次都执行是吗somefunction.method
?
在这:
somefunction = function() {
somefunction.method = function() {
//stuff
}
//other stuff
}
somefunction
每次都执行是吗somefunction.method
?
不,当您有以下任何行时,将执行 somefunction:
somefunction()
somefunction.call()
somefunction.apply()
new somefunction;
somefunction.method()
只会执行somefunction.method
,但可以访问范围内的somefunction
变量(当然还有它自己的局部变量和所有全局变量)。
不是天生的(除非它在“其他东西”中明确调用)。它被评估了,但这只是 CPU 时间,还不够重要。
不。但是,每次调用 somefunction 时,您都会创建一个新的闭包。如果 somefunction 依赖于其范围之外的任何变量,那么 somefunction.method 可能会根据调用 somefunction 的时间而改变,从而产生竞争条件(调试起来并不有趣)。
这可能不是解决问题的正确方法。
考虑
somefunction = function() {
// constructor
}
somefunction.prototype.method = function() {
//stuff
}