jQueryを使う機会があったので、ちょっとJavaScriptの勉強をした。
jQueryのソースの頭のコードが、何をやってるのか分からなかったので、Firebugの中でコソコソと勉強してみた。
JavaScriptって、functionとクラスの定義の境界が、そこはかとなく曖昧で、どういう風に使えるのかイマイチ理解できない。

function foo() {
}
foo.prototype = {
    init: function(bar) {
        this.p = bar;
    }
}

// 1) foo, prototypeをmapとして扱い、initにアクセスし、
//    さらにinitをオブジェクトとして生成する
new foo.prototype.init('kei').p

// 2)fooをオブジェクトとして生成、initをfooのインスタンスメソッド
// として扱う。さらに,functionをオブジェクトして扱い生成する。
f = new foo();
new f.init('kei').p

// 3)これはエラー。initを只のfunctionとして扱ってるので、pに触れない。
f.init('kei').p