JavaScript > Kanasan.JS prototype.js CodeReading#5が終了致しました

2008年06月15日

Kanasan.JS prototype.js CodeReading#5 が無事終了致しました。

ご参加頂いた皆様お疲れさまでした、ありがとうございました。

今回、私自身は久しぶりの参加だったのですが、簡単に発表しましたので、以下に資料をおいておきます。

QueryNote - jQuery based presentation tool

jQueryベースのプレゼンツールを少し作っているので、簡単ですが発表させて頂きました。 まだ作りかけなので、閲覧環境によっては表示が崩れるかも知れませんが、ご容赦下さい。

動作は以下で確認しております。

  • Win IE6,7
  • Win firefox2
  • Win Opera9.2
  • Win Safari3.1
  • Linux firefox2
  • Linux Opera9.2
  • Mac 自分では確認出来ていませんが、動作しているようです。

以下、簡単に感想と気になった所のメモです。

Prototype.js Code Reading

  • ver1.6.0.2が対象
  • 主にDOM周りのソースを読む
  • 前半はElementオブジェクトに対しての、ブラウザ毎の差異を吸収するコード
  • IEのバグ対策や、クロスブラウザを考慮したプロパティの取り方は参考になります。
  • 後半は主にDOMオブジェクトのセレクター部分
  • 恐らくver1.6からだと思うのですが、YUIのSelectorを使用しています。
  • 内容はCSS3のセレクターサポート(どこまでかは把握してませんが)とXPATHの実装。
  • ネイティブでサポートされているものはそれを使いながら、サポートされていない場合は自前の処理を割り当てるというものです。

全体的に高度な正規表現が多く、難解な内容でした。

YUIのライブラリがPrototype.jsにほとんどそのまま取り込まれているので、Prototype.jsには珍しくコメントとが残っていたり、 コーディングスタイルが異なっている為、なかなか興味深かったです。

あれだけの量のコードを書くのはとても骨が折れたと思います。

残りも僅かになってきましたが、次回はFormエレメントからです。

気になった所

(property in object)

プロパティが存在するか確認出来る

alert( 'document' in window )
// true

参考:JavaScript の in を使って要素の差分を取る - IT戦記

正規表現オブジェクト

(/a/).test('bbaabb')
// true

今まであまり使った事なかったのですが、String.matchではなくて、上記のような書き方も出来ます。 これが便利なのは、引数はオブジェクトなら何でも使える事。

String.match()は文字列のみなので、事前に型チェックが必要ですが、気にせず丸投げできます。

あと、JScript以外なら、下記のような書き方も出来るようです。

/a/.test('bbaabb')

これはびっくりしました。

複数回のmatchは以下のようにする

var r=[];
while( a = (/./g)("abc") ) {
    r.push(a);
}
//=> [a,b,c]

DOMのNodeListを取ってくる時

IEはコメントノードを拾ってくる
なので「!」が含まれていないかチェックする必要がある

新しい発見も多く、なかなか充実していました。

最後になりましたが、回線を提供して頂いたYAAさん(いつもありがとうございます)、並びに参加者の皆様ありがとうございました。

posted by 37to at : 20:40 | コメント (0) | トラックバック (0)

コメント

この記事に対するコメントはまだありません。


投稿する

投稿者情報を保存しますか?


トラックバック

トラックバックURI


一覧

この記事に対するトラックバックはまだありません。