ホームページ  >  記事  >  ウェブフロントエンド  >  Javascript オブジェクト指向の継承_js オブジェクト指向

Javascript オブジェクト指向の継承_js オブジェクト指向

WBOY
WBOYオリジナル
2016-05-16 18:27:35850ブラウズ

JavaScript で継承を実装するにはさまざまな方法があります。ここでは、一般的な方法を 2 つ紹介します。

1. 継承を呼び出し、最初にコードを確認します。
まず「person」クラスを定義します

コードをコピーします コードは次のとおりです。

//Human
person=function(){
this.name="Grass Mud Horse"; 🎜>this.eat=function (){
alert("食べたい");
}
this.sleep=function(){
alert("寝たい") ;
}
}

別の学生クラスを定義し、それを Person

コードをコピーします コードは次のとおりです:
//Student クラス
Student=function(){
person.call(this);// Person クラスを継承
this.do宿題=function(){
alert("先生が来ました、宿題をコピーさせてください")
}
}

重要なのは見ることです文 Person.call(this) で、this は現在のオブジェクト、つまり Student を表します。これは理解しやすく、また Person.call(this) は、次のことを意味します。 Person クラスのすべてのパブリック メンバーを Student に「アタッチ」します。クラスに属するため、生徒も個人のすべての機能を持ちます。
高級言語と同様に、親クラスと同じ名前のメンバがサブクラスに出現すると上書きされてしまいます、いわゆる「書き換え」です。
同様に、女の子クラスを定義します。

コードをコピーします コードは次のとおりです:
//Girl クラス
Girl=function(){
パーソン.call(this);//継承 パーソン クラス
this.sex="女性";
JavaScript多重継承を実現するには、以下のマスター クラスを見てください。このマスターは当然学生ですが、同時にかわいい女の子でもあるため、次のコードがあります:
//マスター クラス
Master=function() {
Student.call(this);//Student クラスを継承します
Girl.call(this);//Girl クラスを継承します
this.degree="Master"; //Education
}


テストできます:


コードをコピーします コード
var master=new Master();
master.name="Sister Feng";
master.do宿題(); ;
alert("私の名前は:" master.name);
alert("私の性別は:" master.sex); 複数使用する場合は順序に注意してください継承。2 つのクラスに同じ名前のメンバーがある場合、後者は前のクラスを上書きします。つまり、現在のクラスは後者のクラスのメンバーのみを継承します。
呼び出しメソッドの継承については以上です。呼び出しメソッドがわからない場合は、Google に聞いてください。あまりネット上に転載しないでください。別の継承方法について話しましょう。
2 番目、プロトタイプのプロトタイプ継承:
モニター クラスを定義しましょう:



コードをコピーします

コードは次のとおりです。 : //分隊リーダークラスSquadLeader=function (){ //こんにちはthis.hi=function(){
alert("こんにちは、クラスメートの皆さん、私は今分隊長です");
}
}


上記はマスター クラスを定義しています。これで、このマスターは分隊長に昇格したため、このマスターは分隊長を継承します。今回は、プロトタイプを実装するには、次のコードを参照してください:

Master.prototype=new SquadLeader();//プロトタイプ プロパティはオブジェクトを指します
//または
// Master.prototype=SquadLeader.prototype;
このように、Master は SquadLeader クラスを継承しますが、実際には 2 つの形式が存在します。それは、分隊長の「魂」をマスターにコピーすることを意味します。これで、マスターは分隊長ができるすべてのことができるようになります。
テストしてみましょう:
var master=new Master();
master.hi()//出力「こんにちは、クラスメートの皆さん、私はモニターになりました」

私は個人的に使用することを好みます。最初の解決策 (呼び出し継承) は継承を実装します。これは、記述スタイルが 2 番目の解決策よりも C# に近いことが一目でわかります。私は通常、prototype プロパティを使用して既存のクラスを拡張します。
JavaScript は非常に柔軟な言語です。継承を実装するためのより良い方法が他にもあるかもしれません。私は、ゴージャスな翡翠につながることを願って、ここにレンガを投げているだけです。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。