すべてのコンストラクターはオブジェクトですが、すべてのオブジェクトがコンストラクターであるわけではありません。各コンストラクターには、プロトタイプの継承と共有プロパティを実装するために使用される Prototype 属性があります。オブジェクトは新しい式を使用して作成されます。たとえば、 new String("A String") は String オブジェクトを作成します。 new を渡さずにコンストラクターを直接呼び出すと戻り値が返され、返される型はコンストラクターによって異なります。たとえば、String("A String") は、オブジェクトではなくプリミティブ型の文字列を生成します。
ECMAScript はプロトタイプベースの継承をサポートしています。各コンストラクターにはプロトタイプが関連付けられており、このコンストラクターを通じて作成されたオブジェクトには、コンストラクターのプロトタイプ (オブジェクトのプロトタイプと呼ばれる) に関連付けられた暗黙的な参照があります。さらに、プロトタイプはそのプロトタイプへの null 以外の暗黙的な参照を持つ場合があります。これはプロトタイプ チェーンと呼ばれます。参照がオブジェクトのプロパティを指す場合、その参照はプロトタイプ チェーンの最初のオブジェクトのその名前のプロパティを指します。つまり、初めて、直接関連するオブジェクトのこのプロパティがチェックされます。このオブジェクトにこの名前のプロパティが含まれている場合、このプロパティは参照が指すプロパティになります。このオブジェクトにこの名前のプロパティが含まれていない場合、このオブジェクトのプロトタイプは引き続きチェックされます...
原文:
オブジェクト
ECMAScript には C のような適切なクラスが含まれていません、Smalltalk、または Java ではなく、オブジェクトにストレージを割り当て、プロパティに初期値を割り当てることによってそれらのすべてまたは一部を初期化するコードを実行することによってオブジェクトを作成するコンストラクターをサポートします。すべてのコンストラクターはオブジェクトですが、すべてのオブジェクトがオブジェクトであるわけではありません。各コンストラクターには、プロトタイプベースの継承を実装するために使用される Prototype プロパティがあり、オブジェクトは新しい式でコンストラクターを使用して作成されます。たとえば、 new String("A String") は新しい String オブジェクトを作成します。 new を使用しないコンストラクターは、コンストラクターに依存する結果をもたらします。たとえば、String("A String") はオブジェクトではなくプリミティブ文字列を生成します。
すべてのコンストラクターは、関連するプロトタイプを持ちます。そのコンストラクターによって作成されたオブジェクトは、そのコンストラクターに関連付けられたプロトタイプ (オブジェクトのプロトタイプと呼ばれる) への暗黙的な参照を持ちます。さらに、プロトタイプはそのプロトタイプへの非 null の暗黙的な参照を持つこともあります。これはプロトタイプ・チェーンと呼ばれます。オブジェクト内のプロパティへの参照が行われる場合、その参照は、その名前のプロパティを含むプロトタイプ チェーン内の最初のオブジェクト内のその名前のプロパティへの参照となります。つまり、最初に直接言及されたオブジェクトがそのようなものであるかどうか検査されます。プロパティ; そのオブジェクトに名前付きプロパティ (参照が参照するプロパティ) が含まれている場合、そのオブジェクトに名前付きプロパティが含まれていない場合は、そのオブジェクトのプロトタイプが調べられます。