読者です 読者をやめる 読者になる 読者になる

おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

roppongi.js#3メモ

javascript

第三回roppongi.jsに参加しました。簡単に内容をメモっときます。
Roppongi.JS#3 jQuery Code Reading - 2008/06/17 - Roppongi.JS

メモ

今日は87行目から開始。

90:size()

size()でlengthを返すようにしてる。lengthにはDOMの数が入っている。

99:get()
引数なし
Arrayを返す
引数あり
引数の位置のDOMを返す
1129:makeArray()

get()で使われている内部用メソッド

オブジェクトが配列っぽいかそうでないかのチェック部分

makeArray: function( array ) {
  var ret = [];
  if( array != null ){
    var i = array.length;
    if( i == null || array.split || array.setInterval || array.call ) // ここについて
    //...
}

String, Window, Functionオブジェクトはlengthプロパティがあるので、それぞれ特有のプロパティをチェックして判別している。

  • String.split
  • window.setInterval
  • Function.call

なんでこんなチェックしてるの?他に方法ないの?と皆さん議論。

  1. instanceofだと、ブラウザによってはwindowがチェックできない(IE, safari)
  2. typeofだとjQueryオブジェクトがチェックできない。
  3. フレームなどから他の文書のwindowを参照したときなども考えている?

三つ目はよくわかりませんでしたが、これしか方法ないっぽいねという感じに。

111:pushStack

内部用のメソッド。elementsをstackに入れて保存しておく用らしい。

261:end

jQueryオブジェクトを連鎖的に呼び出していった際に、現在の洗濯状態を破棄して一つ前の状態に戻す。pushStackで突っ込んだ一つ前のオブジェクトを返している。

125:setArray

内部用メソッド。新しい配列にして、要素をセットしている。

次回

6月24日(火) 21:00〜22:00
137行目のeachから

感想

なんとなくはわかるけど、話が高度になると???ってなってしまうなー。サイ本をもっと読むべき。