naoyaのはてなダイアリー – prototype.js でデザインパターン – Iterator
JavaScript はプロトタイプベースのオブジェクト指向言語で、C や Java のようなクラスベースのオブジェクト指向言語とはちょっと実装が異なります。
プロトタイプベースのオブジェクト指向のお話。
「ソフトウェアの匠 羽生田栄一のオブジェクト論」で始めてちょろっと知ってすごい面白いと思いましたが身近なJavaScriptがプロトタイプベースのオブジェクト指向言語だってことをつい最近知りました。
プログラミングの方法論は、「どう分けたらわかりやすいか」に尽きるのでプログラム言語にとって「人間がどう考えてるのか」は大事。
上記のオブジェクト論に拠れば、人間が対象を認識するときには下記のような手順をふむそうです。
- 環境の中から対象を切り出す。
- 対象を妥当なクラスに分類する。
- 対象をそのクラスの実例(インスタンス)として頭の中で再認する。
これをベースにしたのがクラスベースのオブジェクト指向。
しかし、近年の認知心理学では2のとき同時に「対象とプロトタイプ・インスタンス(代表例)を比較する」ことがわかっているそうです。
こっちをベースにしたのがプロトタイプベースのオブジェクト指向。
対象・クラス・プロトタイプとは、トノサマガエルを認識する場合で考えると、まず対象はトノサマガエル。クラスはカエル。プロトタイプは自分の考える代表例なのでおれの場合は緑色のアマガエルです。
たしかにカエル、犬、ジュースなどといったクラスを考えるとき無意識に代表例で考えてしまいます。プログラミングでもまず代表例のオブジェクトがあって、そこに違う部分のプロパティを追加していくというやり方がわかりやすいのかもしれません。
JavaScript以外にどんなプロトタイプベースの言語があるのかとか気になります!
- ソフトウェアの匠
- 日経BP社(2004-10)
- (著)まつもと ゆきひろ
- (著)萩原正義
- (著)高林 哲
- (著)羽生田栄一
- (著)八田真行
- (編集)日経バイト
- 定価:¥ 2,480
- 新品価格:¥ 2,480
- 中古価格:¥ 1,500
- ASIN:4822206653
ref: ソフトウェアの匠