タグ

ブックマーク / hiratara.hatenadiary.jp (5)

  • jQueryは本当にモナドだった - Pixel Pedals of Tomakomai

    タイトルはかなり釣りです:-) まあ、間違えているかもしれないので内容の判断は自己責任で。 さて、元ネタはこちらなのですが、独自のモナド節を唱えていて非常に怪しい。と言うことで、怪しくならないように真面目に解説してみます。 ちなみに、このエントリでは数学のモナドではなくHaskellのMonad、つまりKleisli Tripleとして説明します。 元記事のどこが怪しいのか 元記事では「流れるインタフェース」がbindであるかのように書いていますが、ここが怪しいと感じます。「流れるインタフェース」は単なる関数合成(haskelでいうg . f)であり、クライスリ結合ではないと思います。後述するように、bindが提供するクライスリ結合は、違う型同士をくっつけられるという奇妙な性質を持つ合成です。 元となる圏 DOMエレメントとjQueryオブジェクトのみを含む任意の集合を対象(Object)

    jQueryは本当にモナドだった - Pixel Pedals of Tomakomai
  • JSDeferredのソースを読むんでみて(おまけ) - Pixel Pedals of Tomakomai

    以下の2つの書き方が超COOLでした。 コンストラクタの誤爆を防ぐ function Deferred () { return (this instanceof Deferred) ? this.init() : new Deferred() } (配列を)安全にforeachさせる for (var i in dl) if (dl.hasOwnProperty(i)) (function (d, i) { ... })(dl[i], i);

    JSDeferredのソースを読むんでみて(おまけ) - Pixel Pedals of Tomakomai
  • JSDeferredの動きを追ってみた - Pixel Pedals of Tomakomai

    JSDeferredを使ってみたメモです。動きがわかれば、使うときに気をつけなきゃならないツボがわかるようになります。 なお、詳しい解説は家をどうぞ。 JSDeferredはどんなもの? チュートリアル的ではなく、このフレームワークの基中の基を最初に見ておきます。 JSDeferredでは、処理を数珠つなぎにして実行できます。以下、実用的にはまったく役に立ちませんが、このフレームワークの基中の基となります。 // Deferredを作る var d1 = Deferred(); // 処理をつないでいく var d2 = d1.next(function () { alert("d2"); }); var d3 = d2.next(function () { alert("d3"); }); // 発火すると全部走る d1.call(); ただ、これではまったく非同期性がありませ

    JSDeferredの動きを追ってみた - Pixel Pedals of Tomakomai
  • QUnitでJSのテストを書いてみた - Pixel Pedals of Tomakomai

    JSでテストファーストしたかったので、QUnitを試してみました。QUnitを使えば、とても簡単にJavaScriptのテストスイートを作ることができ、オススメです。 てっとり早く試す インタネットにつながる環境であれば、てっとり早くQUnitを試せます。 QUnitのページに行って、View Sourceタブに表示されているHTMLをコピペしてローカルに保存します*1。このHTMLをブラウザで開けば、サンプルのテストが走ります。4つのテストがあって、4つ目だけfailed(赤文字表示)となればうまく動いてます。 QUnitでは、このようにブラウザでテストの結果を確認します。緑帯が表示されればOKで、赤帯が表示されればNGです。 もうちょっとまともに使う インストール 最初の例ではネットワーク上のリソースを使ってましたが、まともに使うときはローカルにファイルを揃えましょう。 HTMLを用意

    QUnitでJSのテストを書いてみた - Pixel Pedals of Tomakomai
  • onsubmitにはreturnが必要 - Pixel Pedals of Tomakomai

    formのonSubmitで指定した関数の戻り値をfalseにしてもactionで指定したページに 移ってしまいます。どこがいけないのでしょうか? <form action="testp.php" method="get" onSubmit = "doSearch(this)"> ... ベストアンサーに選ばれた回答 <form action="testp.php" method="get" onSubmit = "return doSearch(this)"> formのonSubmitで指定した関数の戻り値をfalseにしてもactionで指定したページに ... ついついundefinedとfalseの区別を忘れがちになってしまいますが、こういうことですね。 なお、onSubmitの中身は、 form.submit.onsubmit = function () { return do

    onsubmitにはreturnが必要 - Pixel Pedals of Tomakomai
  • 1