yaotti's diary

Software is Eating the World

Kanasan.JS JSDeferred CodeReading

6/7に大阪で開催された(した?)JSDeferredコードリーディングに参加してきました.
jsdeferred announce board

JSDeferred コードリーディング ‎( Kanasan.JS : JavaScript Workshop in Kansai)‎

JSDeferred –
CodeRepos::Share – Trac

その時のメモなどを.

コードリーディングでの自分メモ

  • L161 values = Array.prototype.slice.call(values, 0);

Array.prototype.slice.call(arguments) は,argumentsオブジェクトを配列に変換するための決まり文句のようなものらしい.
valuesにlengthが設定されていれば,valuesの数値プロパティを値とする配列を作ることができる.

values = {0: 'a', 1:'b'};
values.length = 2;
Array.prototype.slice.call(values);
// ["a", "b"]
  • L102 (this.canceller || function () {})();

面白い書き方.

  • 継続
d = next(function(){
    alert("1");
}).next(function(){
    alert("2");
    return Deferred(); /* 以降の処理を保存したオブジェクトを返すイメージ */
}).next(function(){
    alert("3");
});
d.call(); /* 保存した処理を行う */

LT

  • flickwriter(37toさん)

Flickrのページに画像リンク作成用メニューを付けるGreasemonkey
flickwriter for Greasemonkey
早速今回使わせてもらいました:) Flickr使ってる人には重宝しそう.

  • DQWM(issmさん)

DQWindowManager - Webをドラゴンクエストっぽく遊ぼう!の説明.ドラクエのコマンドを実行するBookmarklet
作りこまれてるなあ.bookmarkletとwebサービスの連携,というのは面白い.

  • Comets(Sixeightさん)

Sixeight/comets · GitHub
今は無きLingr(チャットサービス)のようなチャットサービスを作ってみた,というプレゼン.
まだバグがあったりして途中らしいけれど,Cometがどういう技術なのかを聞けたのがよかった.
利用者が増えるとまた技術的な壁があるらしい*1ので,そのあたりも気になるなあ.

  • StackStockBooks API&jQueryを使ったweb app(okkezさん)

Stack Stock Books - スタック・ストック・ブックス ~いっぱい積んでる?~APIjQueryをがしがし使って作ったページのプレゼン.
jQueryとそのプラグインを使ったため,JSのコードはあまり書いてないんだとか.jQueryのプラグインは色々ありそうだなぁ.
日本語とインクリメンタルサーチは相性が良くないらしい.(文字をタイプ後に変換という作業が入るため)



JSDeferredはソースは短いものの,かなり難しい内容でした*2JavaScript力がもっと高ければより理解できただろうな,と.
ただ使い方はとても簡単なので,機会があれば(重い処理をがしがしJSでやるとか)使ってみようと思います:)

*1:ポートの再利用期限や同時接続数など

*2:少なくとも僕にとっては