Javascript におけるオブジェクトの考え方
多分間違ってるけどこんな感じなのかな。
- 全てのオブジェクトには prototype が存在する。
- インスタンスは
- プロパティの一覧
- 自分の元のオブジェクトへの参照
- あるオブジェクトのインスタンスのプロパティは
- 自分自身のプロパティ
- 自分の元のオブジェクトの prototype が持っているプロパティ
- インスタンスのプロパティを参照するときは、自分自身のプロパティを優先に検索する。
- インスタンスのプロパティを参照するときに、元のオブジェクト自身のプロパティは検索されない。
- prototype もオブジェクトのインスタンス。
- よって prototype のプロパティを参照するときもオブジェクトのプロパティを参照するときと同じルールが適用される。
- だから、prototype そのものには、インスタンスであれば何でも入れることができる。
- これによって上へ上へとプロパティの検索が走る。
- オブジェクトは Function のインスタンス。
- だからオブジェクトのプロパティの検索は
- オブジェクト自身のプロパティ
- Function の prototype が持っているプロパティ
- オブジェクトのプロパティの検索にはオブジェクトの prototype は使用されない。
lisp で実装できるような気がしてきた。