es6 class以及構造函數(constructor)

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

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++等語言,更加直觀。如: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

相關文章
相關標籤/搜索