ES5 与 ES6 中类的区别
类定义与调用的区别
在 ES5 中主要是通过构造函数方式和原型方式来定义一个类,但是在 ES6 新引入了 class 关键字,使之具有了正式类的能力,类(class)是ECMAScript 中新的基础性语法糖结构。虽然 ES6 类表面上看起来可以支持正式的面向对象编程,但实际上它背后使用的仍然是原型和构造函数的概念。
- 使用 ES5 定义一个类并调用
function Person(name, age, job) {
this.name = "Totora";
this.age = 19;
this.job = "student";
this.sayName = function() {
console.log(this.name);
};
}
let person = new Person();
person.sayName();
-
使用 ES6 定义一个类并调用
-
ES6中有两种定义类的方式:类声明和类表达式
class Person {}
和const Person = class {};
-
class Person {
constructor() {
this.name = "Totora";
this.age = 19;
this.job = "student";
}
sayName() {
console.log(this.name);
}
}
let person = new Person();
person.sayName();
//当我们使用typeof检测Person的类型时:
console.log(typeof Person); //function,它的本质仍然是函数
在调用类时,不管是ES5还是ES6,都必须使用new操作符来进行调用,不可以直接执行。
两者区别在于:
- ES5这样调用不会报错,可以正常执行(因为ES5中的类和普通函数几乎没有本质上的区别)
function Person(name, age, job)