エス6継承
5416 ワード
1.クラスの本質について
クラスを定義
2.constructorの方法
constructorメソッドはデフォルトの方法であり、newオブジェクトの場合は自動的にこの方法を呼び出します.一つのクラスにはconstructorが必要です.定義がないとデフォルトで追加されます.
他の対象言語と同様に、classはextensで継承されます.1)サブ類がconstructorでない場合
インスタンス化子オブジェクトの場合、サブオブジェクトは親の属性と方法を持つことができ、サブオブジェクトはまた、自分の属性と方法を持つことができる.例えば、chineseは父のsay方法を継承し、自分のchinese say方法も持っています.最後の2行のコードは1)サブクラスの_u u uを表します.プロト.属性は、構造関数の継承を表し、常に親を指します.2)サブタイプのプロトタイプ属性の_u uプロト.属性表示方法の継承は、常に親タイプのプロトタイプ属性を指します.
ES 6クラスの引き継ぎ使用詳細
2017年04月28日17:43:00
読解数:3881
ES 6 classの継承とjavaの継承は大同小異で、javaを学んだことがあれば分かりやすいと思います.すべてextensのキーワードで継承します. 残りは多くないです.ここでES 6のsuperキーワードの使用について説明します.
ES 6サブクラスは親クラスを継承し、constructor関数の最初の行でsuper()を呼び出す必要があります.後にキーワードthisを使うことができます.これはサブクラスに自分のthisオブジェクトがないため、親の種類のthisオブジェクトを継承して、このthisに該当する属性と方法を追加することができます.そうでないとエラーとなります.Partent.applyに相当します.SE 5はこれとは逆に、自分のthisオブジェクトを作ってから、親の方法属性をこのオブジェクトに追加します.
superはサブクラスでは一般的に三つの役割があります.は親の構造関数として呼び出された、という方法です. は、一般的な方法では、親の例として を呼び出す.は、静的方法において、親タイプとして を呼び出す.
一般的な方法で呼び出します.この場合、親クラスの例を指します. 静的方法で呼び出します.このときは親の種類を指します.
クラスを定義
class Person{
constructor(skin,language){
this.skin=skin;
this.language=language;
}
say(){
console.log('I am a Person')
}
}
classの本質はまだfunctionなので、一つのprototype属性を持っています.newが一つのクラスになったら、classのpootype属性をこの新しい対象の_u u u_uに割り当てます.プロト.を選択します.プロトタイプは関数の属性です.プロトタイプはオブジェクトインスタンスのプロトタイプです.プロトタイプは属性で、オブジェクトです.プロトタイプはオブジェクトとしてもいいです.プロトタイプはオブジェクトインスタンスのプロトタイプです.したがってプロトタイプは属性で、オブジェクトです.回りくどいです.~newオブジェクトの場合、オブジェクトにptote属性がないと理解できます.tototypeは対象を一つあげる.console.log(typeof Person);//function
var p = new Person('unkown','unknown');
console.log(p);//Person {skin: "unkown", language: "unknown"}
console.log( __proto__==Person.prototype);//ture
newオブジェクトの場合、次のステップ(javascriptアドバンストプログラム設計から)があります.(1)オブジェクトを作成します.(2)構造関数のスコープを新しいオブジェクトに割り当てます.(3)コンストラクションのコードを実行します.(4)新しいオブジェクトに戻ります.の結果です2.constructorの方法
constructorメソッドはデフォルトの方法であり、newオブジェクトの場合は自動的にこの方法を呼び出します.一つのクラスにはconstructorが必要です.定義がないとデフォルトで追加されます.
constructor() {}
3.クラスの継承他の対象言語と同様に、classはextensで継承されます.1)サブ類がconstructorでない場合
class American extends Person{
aboutMe(){
console.log(this.skin+' '+this.language)
}
}
サブクラスのAmericanは父のPersonを継承して、サブクラスはconstructorを定義していません.デフォルトでは一つを追加して、constructorでsuper関数を呼び出します.super関数を呼び出したのは、サブクラスで親クラスのthisを得るためで、呼び出した後に、thisはサブクラスを指します.つまり父のタイプです.プロトタイプ.class Chinese extends Person{
constructor(skin,language,positon){
//console.log(this);//
super(skin,language);
//super();
//console.log(this); super this,
this.positon=positon;
}
aboutMe(){
console.log(this.skin+' '+this.language+' '+this.positon);
}
}
2)サブクラスはconstructorのサブクラスがありますが、constructorの方法でsuper方法を呼び出さなければなりません.そうでなければ、newインスタンスの時にエラーが発生します.子類は自分のthisの対象ではなく、父類のthisの対象を継承するためです.super関数を起動しないと、サブクラスはthisオブジェクトを得られません.super()は父類の構造関数として、子類のconstructorにしか現れません.しかしsuperは親類のプロトタイプのオブジェクトを指し、親類の属性と方法を呼び出すことができます.class Chinese extends Person{
constructor(skin,language,positon){
//console.log(this);// super this
super(skin,language);
//super();// , undefined
console.log(this);
this.positon=positon;
}
aboutMe(){
console.log(this.x+' '+this.y+' '+this.positon);
}
}
4.インスタンス化子オブジェクトインスタンス化子オブジェクトの場合、サブオブジェクトは親の属性と方法を持つことができ、サブオブジェクトはまた、自分の属性と方法を持つことができる.例えば、chineseは父のsay方法を継承し、自分のchinese say方法も持っています.最後の2行のコードは1)サブクラスの_u u uを表します.プロト.属性は、構造関数の継承を表し、常に親を指します.2)サブタイプのプロトタイプ属性の_u uプロト.属性表示方法の継承は、常に親タイプのプロトタイプ属性を指します.
var american = new American('white','English');
var chinese =new Chinese('yellow','chinese','changsha');
chinese.say();//I am a Person
chinese.chinesesay();//I am a Person I am a Chinese
console.log(American.__proto__===Person);//true
console.log(American.__proto__);//
console.log(American.prototype.__proto__===Person.prototype);//true
ES 6クラスの引き継ぎ使用詳細
2017年04月28日17:43:00
読解数:3881
ES 6 classの継承とjavaの継承は大同小異で、javaを学んだことがあれば分かりやすいと思います.すべてextensのキーワードで継承します.
class Animal{
constructor(color){
this.color = color;
};
}
class Bear extends Animal{
constructor(){
super();
}
}
ES 6サブクラスは親クラスを継承し、constructor関数の最初の行でsuper()を呼び出す必要があります.後にキーワードthisを使うことができます.これはサブクラスに自分のthisオブジェクトがないため、親の種類のthisオブジェクトを継承して、このthisに該当する属性と方法を追加することができます.そうでないとエラーとなります.Partent.applyに相当します.SE 5はこれとは逆に、自分のthisオブジェクトを作ってから、親の方法属性をこのオブジェクトに追加します.
superはサブクラスでは一般的に三つの役割があります.
一般的な方法で呼び出します.この場合、親クラスの例を指します.
class Animal{
constructor(color){
this.color = color;
}
run(){
return "run";
}
}
class Bear extends Animal{
constructor(){
super();
console.log(super.run());
}
}
class Animal{
constructor(color){
this.color = color;
}
run(){
return "run";
}
static run(){
return "static run"
}
}
class Bear extends Animal{
constructor(){
super();
console.log(super.run());//run
}
static go(){
super.run();//static run
}
}