m2

prototype.js があるページで Array に対して for-in してはいけない

結果だけみればあたりまえ過ぎて恥ずかしいんだけど、今日 Opera の user.js(FireFoxでいうグリモン)書いててハマったのでメモ。

以下のブックマークレットで確認できます。*1

javascript:(function(){var a=['a','b','c'];for(var i in a){alert(i+':'+a[i])}})()

はてなのページなんかで実行してみると prototype.js による Array の拡張もループの対象になります。
おとなしく以下のように書きましょう。

javascript:(function(){var a=['a','b','c'];for(var i=0;i<a.length;i++){alert(i+':'+a[i])}})()

*1:はてなでのブックマークレットのリンクの書き方がわからない。誰か教えて!!