逆战班学习ES6与ES5构造函数语法与区别笔记 ES6构造函数
class Fun {
constructor(a, b) {
this.a = a;
this.b = b;
}
}
sum () {
console.log(this.a + this.b);
}
let num = new Fun(1, 2);
num.sum();
ES5构造函数
function Fun (a, b) {
this.a = a;
this.b = b;
}
Fun.prototype.sum = function() {
console.log(this.a + this.b);
}
let num = new Fun(1, 2);
num.sum();
两者区别
-
ES6语法定义的属于class类,并不是function函数,所以ES6中的class不能被JavaScript程序预解析,也就是说不能提前调用.
ES5中的function可以提前调用,但是只是有属性没有方法。
-
ES6中constructor构造器中专门定义属性和属性的关键词,属于在构造器中定义实例化对象的属性和属性值,小括号里面的变量就是class类的参数。
ES5中直接在function里面定义实例化对象的属性和属性值
- ES6中构造函数的方法是在class类里面定义的,虽然没有特别声明,但是函数方法也是定义在prototype中
ES5是在函数外通过prototype的方式来构造函数的