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就会报错。