【问题标题】:Writing classes with `function` used to be quicker. So why do we now use `class`? [duplicate]使用 `function` 编写类过去更快。那么为什么我们现在使用`class`呢? [复制]
【发布时间】:2020-08-04 04:54:52
【问题描述】:

看了下面的代码,有一种不好的感觉,旧版本的操作要简单得多。

// Pre ES6: 5 lines
function Car (make, model, year) {
    this.make = make;
    this.model = model;
    this.year = year;
}

// Post ES6: 7 lines
class Car {
  constructor(make, model, year) {
    this.make = make;
    this.model = model;
    this.year = year;
  }
}

归根结底,它们都是对象。那么,我们为什么要使用新结构呢?

【问题讨论】:

  • 因为如果您的实例属性不多,后者更易于管理。添加一些方法,您会发现类语法更整洁。制作RaceCar extends Car 和它的等价物,你会发现类语法有更多好处
  • 这只是 JavaScript 陷入 OOP 疯狂的一部分......
  • @weltschmerz 哈哈.. 我可以看到我们这里有一些忠实的粉丝。
  • 随意定义一些方法,然后以可扩展的方式对其进行子类化,重写一些方法(包括构造函数),然后调用基,然后看看哪些看起来更易于理解、维护和扩展.一个好的编程语言设计不仅仅是简洁。

标签: javascript class ecmascript-6


【解决方案1】:

您在这里没有使用很多类的特性——无论是在 ES5 还是在 ES6 版本中。由于您的对象没有任何方法,因此几乎没有必要编写一个构造函数来让它们从一个公共原型继承。您可以简化为工厂函数:

function makeCar (make, model, year) {
    return {make, model, year};
}

如果您定义一些方法,您会清楚地看到简化语法的好处。

【讨论】:

    猜你喜欢
    • 2023-01-14
    • 2010-11-18
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多