[[prototype]]は概念的にはプロパティである。その役目は「あるオブジェクトのプロトタイプを知りたいとき、どのオブジェクトを参照すればよいかをメモっておく」ことである。前回のサンプルコードにこんなのがあったね。Abc;console.log(xyz.p);//56Abcという関数はここではコンストラクタで、xyzはインスタンスだ。xyzはAbcを元に作られてる。このとき「Abcはxyzのプロトタイプである」という。「プロトタイプ」というのはオブジェクト同士の関係を表す概念だった。プロトタイプ(例ではAbc)から作られた新しいオブジェクト(例ではxyz)は、自分自身があるプロパティやメソッドを持たないときに、プロトタイプのprototypeプロパティを調べて、目的のプロパティやメソッドがあればそれを返す。prototypeプロパティは代替応答すべきものを格納しておく特殊なプロパティだった。プロトタイプチェーンというのはこのような関係がいくつも繋がって「プロトタイプのプロトタイプのプロトタイプの...」と祖先を辿っていき、最終的にObjectオブジェクトのprototypeプロパティまで調べに行く(それでもなければundefinedを返す)、一連のつながりの様だ。xyzはAbcが自分のプロトタイプであることを知っているのか?なぜ自分の持たないプロパティをAbcのprototypeプロパティへ調べに行くのか?そのオブジェクト同士の繋がりがどこかに記されていて然るべきだ。「prototypeプロパティを調べる」という行為はルールとして決まっていればそれでいい。