prototype
全てのオブジェクトが既存のオブジェクトのクローンとなる
クラスからオブジェクトが生成されることはない
OOPのようにクラスからインスタンスを生成するのではなく、全てがオブジェクトである ただしプリミティブ型を除く
そのオブジェクトの親オブジェクトをプロトタイプという概念で保持
そのオブジェクトにメッセージが来て、自分がプロパティやメソッドを持っていなかった場合は、親オブジェクトにそのメッセージを転送する
その親も持ってなかったら、その親の親へ、、、
nullに到達するまで遡る
全てのオブジェクトはObjectのインスタンス
Objectはプロトタイプチェーンのトップに当たる
こんなイメージ
code:js
var c = new Object;
var p = new Object;
// cにメッセージ応答を定義
c.hoge = "hoge";
// pにプロトタイプをセット
p.__proto__ = c;
// メッセージ送信
console.log(c.hoge); // "hoge"
console.log(p.hoge); // "hoge" // p.__proto__.hogeに転送
言語例
参考