「オブジェクト指向 JavaScript の原則」という本を読んだ。
本書はJavaScriptが持つオブジェクト指向的な言語特性や、その特性を強力にサポートするECMAScript 5の機能を紹介し、それらの特性や機能を活かすプログラミングの方法、考え方、パターンについて、深くそして簡潔に解説する書籍です。本書を通じて、C++やJavaなど「クラスベースのオブジェクト指向言語」に慣れたプログラマはJavaScript特有のクラスを持たないオブジェクト指向プログラミングの世界への知識を得ることができ、JavaScriptプログラマはJavaScriptのオブジェクトに関する理解をさらに深めることができるでしょう。JavaScriptのオブジェクトを自由自在に扱い、より効果的なプログラミングを行いたいすべてのプログラマ必携の一冊です。
O'Reilly Japan - オブジェクト指向JavaScriptの原則
A5サイズなので技術書にしては小型本だし、200ページしかないのですらすら読める。
自分なりに興味のあるところをピックアップしていく。
この本では、 ECMAScript 5 で Object に追加されたメソッドのほぼ全てを、サンプルコードで使用している。
ECMAScript 5 対応環境について。IE 8以前のPC環境だけがつらい状況。スマホやNode.jsでは問題なし。
typeof null は "object" が返される Σ(゚Д゚)
関数に渡された引数は arguments オブジェクトにセットされる。配列に似てるけどちょっとちがう。
apply と call のちがいは引数の指定方法がちがうだけ。列挙で渡すか配列で渡すか。
オブジェクトに設定されているプロパティを列挙する方法あれこれ。in, hasOwnProperty, for-in, Object#keys, Object#getOwnPropertyNames を使う。継承されているプロパティも走査できるかどうかなど機能がちがう。
prototype を丸ごと上書きするときは constructor プロパティを再設定する。でもこれ将来 JavaScript の仕様が変わって constructor 以外のプロパティも再設定しなくちゃいけなくなったりしないのかな (まあないんだろうけど)。
Object#valueOf メソッド。
演算時に valueOf メソッドがプリミティブ型の値を返さない場合には Object#toString メソッドが呼ばれる。このへんもしかして落とし穴なんじゃ。。
コンストラクタ継承。constructor プロパティ。
継承元のオブジェクト (いわゆる親クラス的な) のコンストラクタを借用。 Hoge.call(this, hogehoge); みたいな。
継承元のオブジェクト (スーパータイプって呼ぶのか) のメソッドを呼び出すには Hoge.prototype.hogehoge.call(this) で。
JavaScript でオブジェクト指向的に書くときは参考になりそう。
本書はJavaScriptが持つオブジェクト指向的な言語特性や、その特性を強力にサポートするECMAScript 5の機能を紹介し、
それらの特性や機能を活かすプログラミングの方法、考え方、パターンについて、深くそして簡潔に解説する書籍です。
Amazon.co.jp: オブジェクト指向JavaScriptの原則: Nicholas C. Zakas, 和田 祐一郎: 本
tags: javascript book
Posted by NI-Lab. (@nilab)