ES 6クラスsuper

3079 ワード

1.lass
classの熟知しているキーワードは私達の大学の専攻言語はC〓〓で、classは後端の言語の定義種類のキーワードとして、ES 6を導入して文法のあめとして、後端の思想を導入して私達でクラスを定義することができて、更に直観的な実現種類の継承.インスタンスオブジェクトを作成する際には、インスタンス化されたコンストラクタに加えて、定義されたクラスを実装することができます.constructor:constructorメソッドはクラスのコンストラクタであり、newコマンドによりオブジェクトインスタンスを作成する場合、この方法は自動的に呼び出されるデフォルトの方法である.いくつかの特性があります.ここで一つの例を挙げて分析します.
一つ目:一つの種類はconstructor方法が必要で、もし明示的な定義がないなら、デフォルトのconsructor方法はデフォルトで追加されます.ですから、コンストラクタを追加しなくても、デフォルトのコンストラクタがあります.
class Parent1{ a=1; } 
class Parent2{ 
    constructor(){ this.a=1; }; 
} 
console.log(new Parent1())//{a: 1}
console.log(new Parent2())//{a: 1}
つまり、たとえあなたがコンストラクタを追加しなくても、デフォルトでは一つを追加して、現在のクラスのコンテキストに戻ります.第二に、一般的なconstructor方法は、現在の構造の例示的なオブジェクトthisを返すが、constructor方法を指定して新たなオブジェクトを返すこともでき、このような構造のインスタンスオブジェクトではないようにする.
class Parent1{ 
    constructor(){
        this.a=1;
    };
} 
class Parent2{ 
    constructor(a){ 
        return a;
    }; 
} 
console.log(new Parent1())//{a: 1}
つまりconstructorはデフォルトではインスタンスオブジェクトのthisを返しますが、戻り値を手動で追加すると、その戻り先が変わります.最後にまとめます.すなわち、例示的なクラスの時に、コンストラクタは現在のクラスの属性を具体化して、実例的なオブジェクトに返してくれます.2.extens superextens継承とは、サブクラスを宣言する際に、継承したい親をextensで指定することです.これは原理的には父の原型から継承されています.このように、(1)サブクラスのconstructorではsuperメソッドを呼び出す必要があります.サブクラスは自分のthisオブジェクトではなく、親タイプのthisオブジェクトを継承するためです.
class Parent{ 
    constructor(){
        this.name="parent"; 
    }; 
    getName(){ 
        console.log(this.name) 
    } 
} 
class Child extends Parent { 
    constructor(name){ 
        // this.name=name; 
        super();
        this.name=name;
    }; 
} 
let child = new Child("child")// this.name  super        Must call super constructor in derived class before accessing 'this 
let child = new Child("child")// this.name  super     child.getName();// child
サブクラスは継承時にコンテキストを作成するプロセスがないので、superは親の構造関数、つまりPartentのconstructorを表し、親の構造関数を実行して、サブクラスの例としてのオブジェクトを実行します.つまり次のような実現にほぼ等しいということです.
class Parent{
    constructor(){ 
        this.name="parent"; 
    }; 
    getName(){ 
        console.log(this.name) 
    } 
}
class Child { 
    constructor(name){ 
        new Parent(); 
        this.name=name; 
    }; 
}
ここでsuperがconstructorで実行する時内部のthisはBを指すので、super()はここで`A.prototype.com structor.callに相当します`.(2)サブクラスの属性は、親属性と重複した場合、読み出し時にはサブクラスの属性を優先します.
class Parent{ 
    constructor(){ 
        this.name="parent"; 
    }; 
    getName(){ 
    console.log(this.name) 
    } 
} 
class Child extends Parent { 
    constructor(){ 
        super(); 
    }; 
    getName(){ 
        console.log("child") 
    } 
} 
let child = new Child(); child.getName();// child
継承の仕方を呼ぼうとしたら、サブクラスの操作も追加されます.
class Child extends Parent { 
    constructor(){
        super(); 
    }; 
    getName(){ 
        this.name=" from child";
        super.getName(); 
    } 
} 
let child = new Child(); child.getName();// from child
最後に記事の参考になるコンベヤー?ドアを添付します.