継承においてプロトタイプ コンストラクターのリセットが不可欠な理由
オブジェクト指向プログラミングの領域では、継承を利用して新しいクラスを作成することがよくあります。親クラスからプロパティとメソッドを継承します。このプロセスのあまり知られていないものの、重要なステップの 1 つは、プロトタイプ コンストラクターのリセットです。
コンストラクターをリセットする重要性
常に必須ではありませんが、プロトタイプのリセットコンストラクターは、作成された新しいクラスのインスタンスが元のコンストラクターを保持するようにする上で重要な役割を果たします。これは、オブジェクトの作成を伴う基本クラスでメソッドを定義する場合に特に重要です。
同じ名前の新しいインスタンスを返す、「person」クラスで定義された「copy」メソッドの例を見てみましょう。
function Person(name) { this.name = name; } Person.prototype.copy = function() { return new this.constructor(this.name); // Using the inherited 'constructor' instead of 'Person' }; function Student(name) { Person.call(this, name); } Student.prototype = Object.create(Person.prototype);
上記のコードの場合のように、プロトタイプ コンストラクターのリセットを省略した場合、「Student」クラスのインスタンスで「copy」メソッドを呼び出すと、コピーが作成されます。それは「学生」の例ではありません。これは、基本の "person" クラスに "Student" コンストラクターの知識が欠けているためです。
ただし、プロトタイプ コンストラクターを明示的にリセットすることで、
Student.prototype.constructor = Student;
" のインスタンスがStudent" クラスは正しいコンストラクターを継承するため、"Student" のインスタンスとして正しく識別されるコピーを作成できます。
結論として、プロトタイプをリセットします。継承におけるコンストラクターは、オブジェクト インスタンスの整合性を維持するための重要なステップとして機能し、オブジェクト インスタンスが意図したコンストラクターを保持し、必要なプロパティとメソッドを確実に継承します。
以上がJavaScript の継承においてプロトタイプ コンストラクターのリセットが重要なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。