■
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