ES 6のクラス、classの説明

9240 ワード

クラスとオブジェクト

//  class  
class Star {
	constructor(uname, age) {	//constructor this 
		this.uname = uname;
		this.age = age;
	}
	sing(song){
		console.log(this.uname + song)
	}
}

//       new
var ldh = new Star(' ', 18);
var zxy = new Star(' ', 20);

console.log(ldh.uname,ldh.age) 		//  18
console.log(zxy.uname, zxy.age) 	//  20
ldh.sing(' ')		//  

(1)classキーワードでクラスを作成する.クラス名はアルファベット大文字(2)クラスにconstructor関数があり,渡されたパラメータを受け入れるとともにインスタンスオブジェクト(3)constructor関数を返す.newがインスタンスを生成すると自動的にこの関数を呼び出す.この関数を書かないと,クラスは自動的にこの関数を生成します(4)インスタンスを生成しますnewは省略できません(5)最後に文法規範に注意して、クラス名の後ろに括弧をつけないでくださいを作成して、インスタンスクラス名の後ろに括弧をつけて、構造関数はfunctionを加える必要はありません

クラスの継承

class Father {
    constructor() {}
    money() { console.log(100)}
}

class Son extends Father {

}

var son = new Son ()
son.money()         //  money   100
class Father {
    constructor(x, y) {
        this.x = x;
        this.y = y;
    }
    money() {
        console.log(this.x + this.y)
    }
    say() {
        return " "
    }
}

class Son extends Father {
    constructor(x, y) {
        super(x, y)         // 
    }
    say(){
        console.log(super.say() + 'de ')     // 
    }
}

var son = new Son (2, 4)
son.money()         //6
son.say()       // de 

/* 
  money()  this  
  super()     money()
*/

オブジェクトの親クラスの関数にアクセスおよび呼び出すには、superキーワードを使用します.親クラスのコンストラクション関数を呼び出すか、親クラスの一般関数  を呼び出すか、ある場合は先に実行する.継承では、子クラスに含まれていない場合は、親クラスにこのメソッドがあるかどうかを検索し、ある場合は親クラスのこのメソッドを実行します(近接原則)