これで:
somefunction = function() {
somefunction.method = function() {
//stuff
}
//other stuff
}
somefunction
毎回実行されsomefunction.method
ますか?
これで:
somefunction = function() {
somefunction.method = function() {
//stuff
}
//other stuff
}
somefunction
毎回実行されsomefunction.method
ますか?
いいえ、次の行のいずれかがある場合、いくつかの関数が実行されます。
somefunction()
somefunction.call()
somefunction.apply()
new somefunction;
somefunction.method()
のみを実行somefunction.method
しますが、それは のスコープ内の変数にアクセスできますsomefunction
(もちろん、それ自体のローカル変数とすべてのグローバル変数も同様です)。
本質的にではありません(「その他のもの」で明示的に呼び出されない限り)。それは評価されますが、それはCPU時間だけであり、問題にするのに十分ではありません.
いいえ。ただし、関数が呼び出されるたびに新しいクロージャーを作成しています。somefunction がそのスコープ外の変数に依存している場合、 somefunction.method は somefunction がいつ呼び出されるかに応じて変化する可能性があり、競合状態が発生します (デバッグするのは楽しいことではありません)。
これはおそらく、問題にアプローチする正しい方法ではありません。
検討
somefunction = function() {
// constructor
}
somefunction.prototype.method = function() {
//stuff
}