类的表示法

所以 JavaScript 类是带有原型属性的构造器。 这就是他们的工作方式,直到 2015 年,这就是你编写他们的方式。 最近,我们有了一个不太笨拙的表示法。

  1. class Rabbit {
  2. constructor(type) {
  3. this.type = type;
  4. }
  5. speak(line) {
  6. console.log(`The ${this.type} rabbit says '${line}'`);
  7. }
  8. }
  9. let killerRabbit = new Rabbit("killer");
  10. let blackRabbit = new Rabbit("black");

class关键字是类声明的开始,它允许我们在一个地方定义一个构造器和一组方法。 可以在声明的大括号内写入任意数量的方法。 一个名为constructor的对象受到特别处理。 它提供了实际的构造器,它将绑定到名称"Rabbit"。 其他函数被打包到该构造器的原型中。 因此,上面的类声明等同于上一节中的构造器定义。 它看起来更好。

类声明目前只允许方法 - 持有函数的属性 - 添加到原型中。 当你想在那里保存一个非函数值时,这可能会有点不方便。 该语言的下一个版本可能会改善这一点。 现在,你可以在定义该类后直接操作原型来创建这些属性。

function一样,class可以在语句和表达式中使用。 当用作表达式时,它没有定义绑定,而只是将构造器作为一个值生成。 你可以在类表达式中省略类名称。

  1. let object = new class { getWord() { return "hello"; } };
  2. console.log(object.getWord());
  3. // → hello