valueOfとtoStringの列挙
IEの場合
for(i in {valueOf:function(){},toString:function(){}}{ alert(i); };
IEでは上記のようにDontEnum属性のものを上書きしてもDontEnumが継続するというバグがあります(仕様?)。つまり、上記の場合では、valueOfやtoStringがalertされないということが起こります。
ただ、JScript.NETの処理系だときちんと列挙してくれます。仕様的にはどうなの?ですが、FirefoxやOperaでも列挙されるのでIEの負けかなと思います。
このバグがあるのでprotoype.jsではIEの処理系に合わせて余分な処理を追加しています。
JScript.NETの処理系の場合
上のシェルっぽい*1ので toString や valueOfが書き出されています。
次回のIE8でなおってたらいいな
*1:JScript.NETの処理系で遊ぶために作ったシェルもどき