ES5和ES6的语法功能作用完全相同,只是语法不同。
ES6的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。
1. ES5语法
function Fun1(name,age){
this.name = name;
this.age = age;
}
Fun1.prototype.f1 = function(){
console.log(this.name , this.age);
}
2. ES6语法 class
constructor构造器,() 中定义的是class类的参数,在构造器中定义实例化对象的属性和属性值;
构造函数的方法,如f() 也是定义在prototype中的;
class Fun2{
constructor(name,age){
this.name = name;
this.age = age;
}
f2(){
console.log(this.name , this.age);
}
}
ES5和ES6语法的区别
ES6语法定义的class类,不会被JavaScript预解析,不能提前调用;
ES5语法的function可以提前调用,但是只有属性可以提前调用, prototype里的方法不能提前调用,因为定义prototype是在function函数外定义的,如果提前调用函数, prototype里的方法还没执行。
逆战班