ES5的构造函数有一些问题
最大的问题,就是定义 prototype 是在函数之外定义的
调用构造函数,生成实例化对象,一定要在定义 prototype 之后
否则生成的实例化对象,只有属性没有函数方法.这种方式,略显笨拙,在构造函数的时候显得比较麻烦,
而在ES6中,新增语法形式 class 类,就很有效的解决了这一弊端,
它 是一种新的定义构造函数的语法
作用和原理与ES5语法完全相同
只是语法格式和书写方式,不同。
而在调用执行的时候,都得在构造函数之后调用,因为
如果先调用构造函数,只有属性没有方法
因为定义方法的步骤还没执行。
所以他们必须都得在构造函数的方法之后调用。
语法如下。
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
class Fun2{
constructor(name,age){
this.name = name;
this.age = age;
}
f2(){
console.log(this.name , this.age);
}
}
const obj1 = new Fun1('张三',18);
const obj2 = new Fun2('李四',20);
console.log(obj1);
obj1.f1();
console.log(obj2);
obj2.f2();