1 月 28 2007
Prototpye.jsのEnumarableを読む
Prototype.jsのEnumarableをAS2に移植中。 あ、あとObject.extendも ObjectUtil.mixin() みたいな感じで移植したんだが、これは使えるなぁ。
JavaScriptみたいにクラスに関数を追加していくのには、ちょっと使いづらいが(コンパイルエラーとかで)、極力1行で書きたいときに重宝する。
みたく書けば、新しいErrorを作りながら、プロパティも代入してから返せるね。2行書かなくて済むね。それだけだけどね。
で、Enumarableの中身をじっくり読むと、ここだけでも随分トリッキー。Errorじゃないものをthrowしてたり、おじさんには意味がわからない。tryステートメントを入れ子にしてたり・・複雑だなぁ。
で、今日また勉強したのがEnumarable.anyの判定式
はい?なんだって?
まず「throw $break」は、 var $break = new Object(); というのが上の方に書いてあって、_eachの中でtry~catchする用なんだが、
if文の中で代入作業をしていいなんて知らなかった。
「!!」は多分、否定2回だから、対象を強引にブーリアン型に変換しているものと思われる。多分Boolean( ~ )でもいいのではないかと。「!!」の方がクールだな。
はどちらも関数で、引数として渡されたiteratorが何かリターンする関数じゃなかった場合、Prototype.Kという関数を使うらしい。その場合valueをそのまま返す。
これが1行。勉強になります。
Prototype.jsのソースは本当に勉強になる、というお話。