JavaScript 中的类与函数构造函数

Ada*_*das 2 javascript

背景:C# 开发人员最近深入研究 javascript

以下是在 JavaScript 中创建对象的两种方法。它们之间有什么区别,创建对象时我应该使用/优先考虑哪种方法,为什么?

class John {
    constructor(name, birth, height) {
        this.name = name;
        this.birth = birth;
        this.height = height;} }

var Person = function(name, birth, height) {
    this.name = name;
    this.birth = birth;
    this.height = height;}
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 7

他们基本上做同样的事情。class语法是在 ES2015 中引入的,它可以为您做一些事情:

  • 它内置了一个检查,确保该函数在创建新对象时被调用,从而消除了在不允许的情况下调用构造函数的一整类错误new

  • super它允许在构造函数和方法中使用。

  • 它更简单,特别是如果您创建子类。

  • 如果你做内置函数的子类,比如or (你可以不使用),那就简单多了。ErrorArrayclass

class但如果您更喜欢使用旧语法,则可以完成所有这些操作。

当然,如果不通过Babel等工具转换为旧语法,就无法在 IE 等过时的浏览器上使用新语法。

(必须注意的是:在 JavaScript 的原型继承上使用类似类的陷阱是一种风格选择,而不是必需的。如果您愿意,可以直接使用原型继承。)

您可能还会发现这个答案很有用,将class语法与function使用语法做同样的事情进行比较。