prototype.js を読んでみる会

以前 言語開発合宿 でお世話になった ujihisaさん企画.

http://cotocoto.jp/event/2429

prototype.jsは便利と聞いているが,触ったことがないので,これを機に使ってみようかと思ってソースを読むところから始めた.

あと,ソースコードを読む集まり,というのも始めてで面白そうなので参加.Linuxカーネルとかは読む気なくなるだろうけど,prototype.jsなら....3277行.まあ,時間かければ読める範囲

とにかく,JavaScriptは謎の多い言語なので,のっけから

    IE:     !!(window.attachEvent && !window.opera)  (13行目)

とかいわれて,「あれ !! って何の演算子だっけ」と戸惑ったり(本当は単に否定を2回して,trueかfalseへの強制キャストをするため)


圧巻は,NumberとかStringに勝手なメソッドを追加していくところ.

116行目-

Object.extend(Number.prototype, { 
  toColorPart: function() {
    return this.toPaddedString(2, 16);
  },
  succ: function() {
    return this + 1;
  },
  times: function(iterator) { 
    $R(0, this, true).each(iterator);
    return this;
  },

これを使って

 3 .times(function () {...})

という書き方もできる.

Stringの拡張されたメソッドはRubyのメソッドをまねているそうだ.でも,たまに仕様が違っていて逆に混乱するとか.あとRubyJavaScriptでは「object.inspect」と書いたときの挙動がちがう(Rubyはinspectメソッド引数なしを呼ぶ.JavaScriptはinspectメソッド自身を指す)ので,prototype.jsRoR 開発をやっていると混乱するそうだ.



会場には20人以上の参加者がいたので,理解度もまちまちだった.そこでグループを2つにわけたレベル別講座をするほどの親切徹底ぶり.でも,結局どちらのグループもハイレベル(片方はprototype.jsの機能について,片方はJavascriptの仕様自身に関する議論)になった模様.

結局,読めたのが400行/3200行 程度だったので,次回からは要点をおさえて全体を俯瞰した読み方も混ぜるとよいでしょう.