valueOfとtoStringの列挙

IEの場合
for(i in {valueOf:function(){},toString:function(){}}{ alert(i); };

IEでは上記のようにDontEnum属性のものを上書きしてもDontEnumが継続するというバグがあります(仕様?)。つまり、上記の場合では、valueOfやtoStringがalertされないということが起こります。
ただ、JScript.NETの処理系だときちんと列挙してくれます。仕様的にはどうなの?ですが、FirefoxOperaでも列挙されるのでIEの負けかなと思います。
このバグがあるのでprotoype.jsではIEの処理系に合わせて余分な処理を追加しています。

JScript.NETの処理系の場合

WS000000
上のシェルっぽい*1ので toString や valueOfが書き出されています。

次回のIE8でなおってたらいいな

*1:JScript.NETの処理系で遊ぶために作ったシェルもどき