この章では、プロトタイプチェーンメソッドと組み合わせた実用的な呼び出しメソッドを使用して JavaScript 継承を実装する最良の方法を紹介します。これは非常に実用的で、必要な友人は参照できます。
JavaScript の継承を実装する最も簡単な方法は、call メソッド (または apply メソッド) とプロトタイプ チェーン メソッドですが、どちらのメソッドにも欠陥があり、それらを組み合わせて継承を実装するのが良い方法です。以下は例です。
function Animal(age){ this.age = age; } Animal.prototype.sayAge = function(){ window.alert("My age is "+this.age+"!"); }; function Dog(age,name){ Animal.call(this,age); this.name = name; } Dog.prototype = new Animal(); Dog.prototype.sayName = function(){ window.alert("I am a "+this.name+"!"); }; var dog = new Dog(15,"dog"); dog.sayName(); dog.sayAge();
Animal クラスの場合、フィールド属性 age と関数属性 SayAge がプロトタイプの方法で定義されています。 Dog クラスは Animal を継承する必要があり、そのフィールド属性には age に加えて name が含まれます。Animal.call(this,age); を通じて、Dog は Animal のフィールド属性 age を継承して初期化できます。 call メソッドの最初のパラメーターは継承されたクラスの this ポインターであり、2 番目のパラメーターは Animal クラスのコンストラクターのパラメーターです。実際、継承は call メソッドを通じてのみ実現できますが、唯一の要件は、親クラスの関数属性がコンストラクターで定義されている必要があることです。これは、ここでプロトタイプ メソッドを使用して関数属性を定義するのには適していません (プロトタイプ メソッドを使用して Function プロパティを定義する方が、コンストラクター内で定義するよりも直感的です)。 Animal のプロトタイプ モードで定義された関数属性を継承するには、「Dog.prototype = new Animal();」というステートメントが必要です。 Dog クラスの SayName() 関数は、それ自体の関数属性です。
継承を実装するこの最も古典的な方法に加えて、現在、いくつかの無料ライブラリが利用可能です。しかし、あらゆる種類のライブラリについて考えるのは大変です。時間と必要なときに勉強しましょう。