JAvascriptオブジェクト向けJavascript継承
2851 ワード
前節では、JavaScriptオブジェクト向けのネーミングスペース、javascriptオブジェクト向けのJavaScriptクラス、JavaScriptオブジェクト向けのプライベートメンバー、公開メンバー、Javascriptオブジェクト向けのリロードについて説明しましたが、上を見てから下を見ることができます.JavaScriptで継承を実現するには、いくつかの方法があります.以下、2つの一般的な方法について説明します.一、call継承、コードを参照:まず「人」クラスを定義する
Personに継承する学生クラスを定義します
重要なのは現在のオブジェクト、すなわちStudentを表すcall(this)という文は分かりやすいが、Person.call(this)は、Personクラスのすべての公開メンバーをStudentクラスに「付加」し、StudentにもPersonのすべての機能を持たせることを意味する.
高度な言語と同様に、子クラスに親クラスと同じ名前のメンバーが表示されると、上書きされます.いわゆる「書き換え」です.
同じように、女の子クラスを定義します.
JavaScriptは多重継承を実現できるので、次のMaster(修士)クラスを見てください.このMasterは自然に学生ですが、同時にきれいなMMで、次のコードがあります.
テストしてみましょう
複数の継承では、2つのクラスに同じ名前のメンバーがある場合、後者は前のクラスを上書きします.つまり、現在のクラスは後のクラスのメンバーのみを継承します.
callメソッドの継承についてお話ししますが、callメソッドが不明な場合は、Google兄さんに聞いてみてください.私は余計なことを言わないで、ネット上であまり転載しないでください.次に、別の継承方法について説明します.
二、prototypeプロトタイプ継承:
班長クラスをもう1つ定義します.
上には修士類が定義されていますが、今ではこの修士が班長に昇進したので、このMasterはSquadLeaderを継承します.今回はprototypeで実現します.次のコードを見てください.
個人的には1つ目のシナリオ(call継承)で継承を実現するのが好きで、すべてのコードは1つの「{}」に包まれていて、一目瞭然で、書くスタイルでは2つ目よりC#に近いです.prototypeプロパティは、既存のクラスを拡張するために一般的に使用されています.
JavaScriptは非常に柔軟な言語であり、継承を実現するには他にもっと良い方法があるかもしれません.みんなは発掘を研究することができます.私はここでレンガを投げたと思っています.華美な玉を引き出したいと思っています.
//
Person=function(){
this.name=" ";
this.eat=function(){
alert(" ");
}
this.sleep=function(){
alert(" ");
}
}
Personに継承する学生クラスを定義します
//
Student=function(){
Person.call(this);// Person
this.doHomework=function(){
alert(" , ");
}
}
重要なのは現在のオブジェクト、すなわちStudentを表すcall(this)という文は分かりやすいが、Person.call(this)は、Personクラスのすべての公開メンバーをStudentクラスに「付加」し、StudentにもPersonのすべての機能を持たせることを意味する.
高度な言語と同様に、子クラスに親クラスと同じ名前のメンバーが表示されると、上書きされます.いわゆる「書き換え」です.
同じように、女の子クラスを定義します.
//
Girl=function(){
Person.call(this);// Person
this.sex=" ";
}
JavaScriptは多重継承を実現できるので、次のMaster(修士)クラスを見てください.このMasterは自然に学生ですが、同時にきれいなMMで、次のコードがあります.
//
Master=function(){
Student.call(this);// Student
Girl.call(this);// Girl
this.degree=" ";//
}
テストしてみましょう
var master=new Master();
master.name=" ";
master.eat();
master.doHomework();
alert(" :"+master.name);
alert(" :"+master.sex);
複数の継承では、2つのクラスに同じ名前のメンバーがある場合、後者は前のクラスを上書きします.つまり、現在のクラスは後のクラスのメンバーのみを継承します.
callメソッドの継承についてお話ししますが、callメソッドが不明な場合は、Google兄さんに聞いてみてください.私は余計なことを言わないで、ネット上であまり転載しないでください.次に、別の継承方法について説明します.
二、prototypeプロトタイプ継承:
班長クラスをもう1つ定義します.
//
SquadLeader=function (){
//
this.hi=function(){
alert(" , ");
}
}
上には修士類が定義されていますが、今ではこの修士が班長に昇進したので、このMasterはSquadLeaderを継承します.今回はprototypeで実現します.次のコードを見てください.
Master.prototype=new SquadLeader();//prototype
//
//Master.prototype=SquadLeader.prototype;
Master SquadLeader , , , 。 : SquadLeader “ ” Master, SquadLeader ,Master 。
:
var master=new Master();
master.hi()// “ , ”
個人的には1つ目のシナリオ(call継承)で継承を実現するのが好きで、すべてのコードは1つの「{}」に包まれていて、一目瞭然で、書くスタイルでは2つ目よりC#に近いです.prototypeプロパティは、既存のクラスを拡張するために一般的に使用されています.
JavaScriptは非常に柔軟な言語であり、継承を実現するには他にもっと良い方法があるかもしれません.みんなは発掘を研究することができます.私はここでレンガを投げたと思っています.華美な玉を引き出したいと思っています.