26

ある日、ゲームのプログラミング中に誤ってこれに出くわしました。

var foo = function() { alert("Hello, World!"); }

foo[0] = "Zero";
foo[1] = "One";
foo[2] = "Two";
foo[3] = "Three";

foo(); // Alerts "Hello, World!"
alert(foo[2]); // Alerts "Two"

JavaScript でこれができるのはなぜですか? これはグリッチですか?

4

8 に答える 8

1

これまで誰も言及していなかったのは、この機能により、衝突などを引き起こす可能性のある多くの公開データでグローバル空間を汚染することなく、関数に役立つ可能性のある情報を関数に関連付けることができるということです。

もちろん、これは一般的な OOP/プロトタイピングの機能ですが、より一般的なオブジェクトのプロパティとしてではなく、関数を直接呼び出すことができるという追加の利点があります。

于 2013-08-02T21:15:53.557 に答える