es6 class以及構造函數(constructor)
阿新 • • 發佈:2018-09-09
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)