だるろぐ

明日できることは、今日しない。

『プロになるためのJavaScript入門』

プロになるためのJavaScript入門 ~node.js、Backbone.js、HTML5、jQuery-Mobile (Software Design plus)

プロになるためのJavaScript入門 ~node.js、Backbone.js、HTML5、jQuery-Mobile (Software Design plus)

TypeScript 1.0 の足音が聞こえてきた。そろそろ本気を出して TypeScript を学ぶべき時が近づいてきた。しかし、そのまえに JavaScript を知らねばならないだろう。

というわけで『プロになるためのJavaScript入門』という本を買ってみた。まだ2章までしか読んでないのだけれど、なかなか面白い。

f:id:daruyanagi:20130508090958j:plain

たとえば、これはオブジェクト指向プログラミング(OOP)における JavaScript の立ち位置を図式化したもの。筆者によると、OOP には大きく分けて3つの要素が存在するという(以下、わしの独断と偏見も含む)。

メッセージ

すべての処理 = メッセージの送信 + オブジェクト(レシーバー)

たとえば Smalltalk には制御構造すらなく、すべてが“メッセージ”として扱われている。元祖オブジェクト指向。

クラス = 構造化されたデータ + それに所属するメソッド
インスタンス = クラスの具現化

データとメソッドのカプセル化。コールされたメッセージではなく、それを受け取ったレシーバーによって処理の内容が決められる(多態性)。継承という概念で“あらかじめ静的に”階層設計されたクラスをもつ。

インスタンス

オブジェクト = 値でも参照でも関数でもなんでも入れられる連想配列のようなもの(スロット)
インスタンス = 既存オブジェクトのコピー

データとメソッドをクラスではなくインスタンスで扱う(プロトタイプ)。オブジェクトへあとから機能を追加するのが簡単。

この3つが等置できるものかと言われればどうかなって気もするけど、自分の中で JavaScript の立ち位置がちょっとクリアになった気がする。要は、今まで馴染んできたものとはまったく別物だと思えばいいんだ。