Skip to content
登录后刷题更便捷

ES6 的类和 ES5 的构造函数有什么区别?

难度:

让我们来看一个例子:

js
// ES5 构造函数
function Person(name) {
  this.name = name;
}

// ES6 类
class Person {
  constructor(name) {
    this.name = name;
  }
}

对于简单的构造函数而言,他们看起来很相似。

他们的主要区别体现在类继承上。如果我们想要创建一个继承于 Person 父类的 Student 子类,并且添加一个 studentId 字段,我们需要做的修改如下:

js
// ES5 构造函数
function Student(name, studentId) {
  // 调用父类的构造函数来初始化父类的成员变量
  Person.call(this, name);

  // 初始化子类自己的成员变量
  this.studentId = studentId;
}

Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student;

// ES6 类
class Student extends Person {
  constructor(name, studentId) {
    super(name);
    this.studentId = studentId;
  }
}

从上面的例子我们可以看出来,使用 ES5 构造函数来实现继承特别麻烦,而使用 ES6 类的方式来实现就特别容易理解和记忆。

参考

内容仅供参考,难免有不恰当的地方,如果有问题欢迎及时反馈
部分内容来自网络,如果不慎侵犯您的权益,请联系我们,以便及时删除侵权内容