2008-02-25

John Resig / Pro JavaScript Techniques

「Pro JavaScript TEchniques」は、jQuery の作者 John Resig による JavaScript テクニックの本です。



  • 実行時に型を知るには typeof 演算子を使う。


  • User.prototype = new Person(); と書くことで、User クラスは、Person クラスを継承する。


  • <a ... rel="foo" ..> と書くことで、特定の動作を適用する要素を探索できるようになる。


  • アニメーション系のコードでは、コマごとの動作を、setTimeout に入れておく
      for (var i=0; i<=100; i +=5 ) {
        (function() {
           var pos = i;
           setTimeout(function() { // pos を使って何かする }, (pos+1)*10);
         })();

スコープに関しても理解が深まりました。

In JavaScript, scope is kept within functions, but not within blocks (such as while, if and for statements). (p.25)



Using a self-executing, anonymous function you can essentially hide all normally global variables from being seen by other code [...] (p.29)



However, it [a closure] does not provide the value of the variable at the time it i screated; it provides the last value of the variable within the parent function. (p.29)



「スコープの範囲は関数ごと」「関数がファーストクラスオブジェクト」であることから、クロージャの使い方と注意点が分かります。グローバルになってしまいがちなオブジェクトを関数に隠蔽してしまうのが、クロージャの役割である、と。それから、変数のスコープは関数ごとなので、親関数の実行が終了するときに、クロージャ内の変数に値がバインドされるらしい。



In the specification it is stated that no GET request should have damaging side effects (such as deleting a message), which is why the Google Accelerator did what it did. (p.131)



だから、オンラインアプリに保存したはずのデータがどんどん消されちゃうわけですね。




Pro Javascript Techniques (Pro)