__noSuchMethod__ のバグ
__noSuchMethod__について - 素人がプログラミングを勉強するブログ
__noSuchMethod__ - Mozilla Developer Center
気になったので調べてみたところ、MDC の注意書きは記述不足だったようです。ちなみに、記述不足だった部分は Firefox 3 では修正されています。
どういうことかというと、id:javascripter が書いている、MDC の注意書きでは動かないはずのコード(ドット無しでメソッド名を文字列リテラルで呼び出すコード)は Firefox 2、Firefox 3 のどちらでも動きます。
ですが、MDC の注意書きの参考リンクにあるBug 371033 – Universal support for noSuchMethod の報告のコード(ドット無しでメソッド名を変数参照で呼び出すコード)を試すと、 Firefox 2 だとエラーになりますが、Firefox 3 だと正常動作します。言葉で説明するよりコード見た方がわかりやすいと思います。
var a={ __noSuchMethod__:function(id,args){ console.log(id,args); } } // id:javascripter のコード a["y"](); // これは Firefox 2 でも 3 でも O.K. // 以下、バグ報告にあるコード var name='x'; a[name](); // Firefox 2 だと "a[name] is not a function"
つまり、ドット無しでメソッドを呼び出す場合、メソッド名が変数参照だと __noSuchMethod__ が動かないバグがあったが、Firefox 3 がリリースされる過程で修正されたということ(バグ報告自体は fixed になっていないのですが、関連するバグの修正で修正された可能性が高い)だと思います。
MDC は今現在編集できないので、編集可能になりしだい問題の記述を削除しておきます。
削除しました。リンクも旧形式だと上手くリダイレクトされないので更新。