2012-06-02 289 views

回答

3

没有,当你有任何这些行的执行somefunction:

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

somefunction.method()将只执行somefunction.method,但将有机会获得变量的somefunction范围(以及它自己的局部变量和当然所有的全局变量)。

0

不是固有的(除非它明确地在“其他东西”中被调用)。这是评估,但这只是CPU时间,不足以说明问题。

+0

你的意思是什么通过评估?你的意思是检查错误? – PitaJ

+0

@PitaJ:评估表达式'somefunction'。这涉及在所有适用范围内搜索“somefunction”的绑定。该函数未被调用。 – icktoofay

0

不,但是每次调用某个函数时都会创建一个新的闭包。如果某个函数依赖于其范围之外的任何变量,那么somefunction.method可能会根据何时调用某个函数而发生变化,从而创建竞争条件(从未调试过)。

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

考虑

somefunction = function() { 
    // constructor 
} 


somefunction.prototype.method = function() { 
    //stuff 
} 
+1

你的意思是'somefunction.prototype.method =功能(){}':) –

+0

whups ...很正确,编辑...我不应该喝酒和编码:) –

+0

废话,酒释放心灵;-) –

相关问题