読者です 読者をやめる 読者になる 読者になる

id:mindcatさんのJavaScriptエントリに少しだけコメント

FAQ形式によるJavaScriptの本質がわかる超入門 - 風と宇宙とプログラムが凄く良く出来てて、くやしい。じゃなくて、折角なので少しだけツッコミを。いや、これだけ完成度が高いのにツッコミというのも無粋ですが。

数値を文字列に、逆に文字を数値に変換する

String(x)、Number(x)を推奨されていますが、一応、IE6ではパフォーマンスに差が出る点に注意が必要だと思います。
to_string
(関数呼び出しのコストのため)IE6だとこのように結構な差がでます。(といっても10万回での結果ですが。)

"" + 78ms
"" + 63ms
String() 125ms
String() 125ms

確かにChromeなどString()のほうが少しだけ速いみたいなので、ケースバイケースですね。
JavaScriptで ""+x を文字列変換に使うのは気持ち悪い - 風と宇宙とプログラムnanto_vi先生のコメントより、"" + xとString(x)は結果が異なる場合があるとのこと…。

Arrayのようにユーザ定義関数でnew しても関数コールしても同じ動作をするもの

これは、instanceofを使うのが割と一般的だと思います。

function MyFunction(){
    if (!(this instanceof MyFunction)) {
        return new MyFunction();
    }
}
alert([
 MyFunction() instanceof MyFunction, // true
 new MyFunction() instanceof MyFunction // true
]);

が、windowオブジェクトに対してinstanceofをするとIE6でわずかではあるがメモリリークがおこる( Working aroung the instanceof memory leak - Ajaxian)ので、一応注意が必要です(window以外にもdocumentとElementでもメモリリークは起きます。)。
オブジェクトに結びつかない関数呼び出しでのthisはwindowになるのを利用して、こういう書き方もできますが、

function MyFunction(){
    if (this === window) {
        return new MyFunction();
    }
}
alert([
 MyFunction() instanceof MyFunction, // true
 new MyFunction() instanceof MyFunction // true
]);

オブジェクトのメソッドをnewする場合を考えるといまひとつです。

var MyObject = {
    Func:function(){
        if (this === window || this === MyObject) {
            return new MyObject.Func();
        }
    }
}
alert([
 MyObject.Func() instanceof MyObject.Func, // true
 new MyObject.Func() instanceof MyObject.Func // true
]);

instanceofのメモリリークは10回windowにinstanceofを使っても、最初の1回しかリークしない(しかも50k程度)みたいで、気にしなくても良いかもしれません。

あと、なぜかgotoがなんども出てきて面白かったけどこれはどうでもいい