JavaScriptの継承に最適な方法を紹介します.

1183 ワード

JavaScript継承を実現する最も簡単な方法はcall方法(またはappy方法)とプロトタイプチェーン方法ですが、この二つの方法には欠陥があります.以下の例を示します.
 
  
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があり、sayAge法の定義はプロトタイプ方式を採用しています.Dug類はAnimalを継承し、フィールド属性はage以外にnameがあり、Animal.callを通じて(this,age);Animalのフィールド属性ageをDogで継承し、初期化することができます.call方法の最初のパラメータは継承クラスのthisポインタであり、2番目のパラメータはAnimal類の構造関数のパラメータである.実際には、コール方法によってのみ継承が可能ですが、唯一の要件は、父の関数属性が構造関数で定義されています.ここの関数属性はプロトタイプの定義を使用すると不適切です.Animalのプロトタイプで定義されている関数の属性を継承するには、必要な語句が「Domg.prototype=new Animal()」です.DugクラスのsayName()関数は自身の関数属性です.
 この最も古典的な継承方式のほかに、無料の倉庫があります.いろいろな倉庫を考えると、頭が大きくなります.時間が必要な時に研究しましょう.