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