プロトタイプがどのように機能するかを完全に理解しようとしています。
これがプロトタイプの私の定義です。
すべてのオブジェクト (ベース オブジェクトを除く) が持つ組み込みプロパティで、別のオブジェクトのコピーである「proto{}」オブジェクトを参照および参照します。このオブジェクトのプロパティとメソッドは、元のオブジェクトに見つからない場合に参照できます。
あれは正しいですか?特に、「別のオブジェクトのコピーである」部分について疑問に思っています。つまり、JS エンジンは、オブジェクト A のプロトタイプ プロパティが参照用に指すメモリ空間にオブジェクト B の格納されたコピーを作成します。
今私の質問についてObject.create
:
私の理解では、このメソッドは、それが使用されているオブジェクトのプロトタイプ (またはオブジェクト自体?) を作成し、渡された別のオブジェクトのプロパティとメソッドを継承 (IOW、渡されたオブジェクトのコピーを参照) します。
var john = Object.create(Person);
上記のコードでは、john
オブジェクトが作成され、そのプロトタイプ プロパティは、オブジェクトのメソッドとプロパティを持つ作成されたオブジェクトを指していPerson
ますか? 別の言い方をすればObject.create
、オブジェクトのコピーを作成Person
し、のプロトタイプ プロパティがjohn
指すメモリ空間に配置します。これは何が起こっているのかについての正しい理解ですか?
もしそうなら、オブジェクト(「人」)のコピーが作成される理由であり、プロトタイプがjohn
指しているPerson
オブジェクトの小道具/メソッドを上書きせずにプロパティとメソッドの値を変更できるためです。john
継承に関連付けられたプロトタイプ オブジェクト?
私はこれを分解して理解できるようにし、概念を過度に複雑にしないようにしています。
これは、私の現在の理解をさらに説明するために描いた絵です。