0

これで:

somefunction = function() {

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

somefunction毎回実行されsomefunction.methodますか?

4

3 に答える 3

3

いいえ、次の行のいずれかがある場合、いくつかの関数が実行されます。

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.method は somefunction がいつ呼び出されるかに応じて変化する可能性があり、競合状態が発生します (デバッグするのは楽しいことではありません)。

これはおそらく、問題にアプローチする正しい方法ではありません。

検討

somefunction = function() {
  // constructor
}


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