Firefox のJSメモ

var $ = document.getElementById;
$('hoge');

これはFirefox 3だと意図した通りに動くが,Firefox 2だとエラーが出る。Firefox 2のバグが3で直った,ということなのだろうか。ちょっと釈然としないけど,DOM関係の関数は普通の関数と違う挙動を示すことがあるってことなのかな。
代わりに,こうすればちゃんと動く。

function $(name) { return doucment.getElementById(name); }

一個前の日記でGreasemonkeyスクリプトが動かないってやりとりがあったけど,原因はこれ。原因特定後はあっさり直せたのでよかったとは思う。

5/24 18:00 追記

id:lieutar にブクマコメントをいただきました。

foo.bar(bazz) は、foo.bar.apply(foo,[bazz])となるけれど、bar(bazz)は、 bar.apply(null,[bazz]) となるから

なるほど!疑問解決です。
Firefox2だとgetElementByIdの中でthisを使ってdocumentを参照している,というような実装になっているから,関数をdocumentから切り離すと動かなかい。Firefox3だとそこが変更されて切り離しても問題無いような実装になっている,ということなんでしょうね。