1. 程式人生 > >es6 class以及構造函數(constructor)

es6 class以及構造函數(constructor)

pro console func java 函數 .proto 其他 highlight scrip

es5中,生成實例對象通過構造函數來生成:

function Fun(a,b) {
    this.a = a;
    this.b = b;
}
Fun.prototype.showA = function () {
    console.log(this.a)
}
var fun = new Fun(1,2);
fun.showA();//1

  

es6則引用了class的概念,使得更接近java、c++等語言,更加直觀。如:

class Fun {
    constructor(a,b){
        this.a = a;
        this.b = b;
    }
    showA() {
        console.log(this.a);
    }
}
var fun = new Fun(1,2);
fun.showA();//1

這兩種寫法是一樣的,在es6中,class可以理解為一個語法糖,只是讓這種寫法更加直觀。
要註意的是,es6中聲明新的實例必須要用new聲明。
其中constructor為類的默認方法,通過new的調用可以執行這個方法。每個類都必須要有這個方法,如果沒有顯示定義,則一個空的constructor被添加到類裏面。constructor方法默認返回實例對象,即this。也可以返回其他對象。這事,新的實例instanceof當前class就會報錯。

es6 class以及構造函數(constructor)