JavaScript は、 Java や C++ のようなクラスベースの言語を経験した開発者にとってやや紛らわしく、class というキーワードが予約語で、変数名に用いることができないにもかかわらず class の実装が提供されません。
ただし、 JavaScript には 1 つだけオブジェクトの継承に関する概念があります。オブジェクトはプロトタイプと呼ばれる、他のオブジェクト(または null )への内部的な繋がりを持っています。このプロトタイプオブジェクトは、あるオブジェクトがそのプロトタイプとして null を持つまで、プロトタイプを継承します。このような、オブジェクトが他のオブジェクトのプロトタイプとなる連鎖を、プロトタイプチェーンと呼びます。
継承とプロトタイプチェーン - JavaScript | MDN
- prototype と proto は別物
- いわゆる "プロトタイプチェーン" は proto プロパティで実現されている
- オブジェクトを new するとき, コンストラクタ関数の prototype プロパティが指しているオブジェクトが, 生成されるオブジェクトの proto に代入される
prototype と proto - フリーフォーム フリークアウト
オブジェクトの初期化で使用されたコンストラクタ関数を参照するconstructorプロパティ。 constructorプロパティはコンストラクタのprototypeのプロパティであり、インスタンスからはprototypeを通じてアクセスすることができる。 コンストラクタのprototypeにプロパティ/メソッドを追加する方法によってconstructorプロパティに入る値が変わるので注意。