目录

JavaScript 类简介

ECMAScript 2015(也称为 ES6)引入了 JavaScript 类。

JavaScript 类是 JavaScript 对象的模板。

JavaScript 类语法

使用关键字class创建一个类。

始终添加一个名为constructor()

语法

class ClassName {
  constructor() { ... }
}

示例

class Car {
  constructor(name, year) {
    this.name = name;
    this.year = year;
  }
}

上面的示例创建了一个名为"Car" 的类。

该类有两个初始属性:"name" 和 "year"。

JavaScript 类是不是一个东西。

它是一个模板对于 JavaScript 对象。


使用类

当你有一个类时,你可以使用该类来创建对象:

示例

const myCar1 = new Car("Ford", 2014);
const myCar2 = new Car("Audi", 2019);

亲自试一试 »

上面的例子使用了汽车类创建两个汽车对象

创建新对象时会自动调用构造函数方法。


构造方法

构造方法是一个特殊的方法:

  • 它必须具有确切的名称"constructor"
  • 创建新对象时自动执行
  • 它用于初始化对象属性

如果没有定义构造函数方法,JavaScript 将添加一个空的构造函数方法。



类方法

类方法是使用与对象方法相同的语法创建的。

使用关键字class创建一个类。

始终添加一个constructor()方法。

然后添加任意数量的方法。

语法

class ClassName {
  constructor() { ... }
  method_1() { ... }
  method_2() { ... }
  method_3() { ... }
}

创建一个名为 "age" 的类方法,该方法返回汽车年龄:

示例

class Car {
  constructor(name, year) {
    this.name = name;
    this.year = year;
  }
  age() {
    const date = new Date();
    return date.getFullYear() - this.year;
  }
}

const myCar = new Car("Ford", 2014);
document.getElementById("demo").innerHTML =
"My car is " + myCar.age() + " years old.";

亲自试一试 »

您可以向类方法发送参数:

示例

class Car {
  constructor(name, year) {
    this.name = name;
    this.year = year;
  }
  age(x) {
    return x - this.year;
  }
}

const date = new Date();
let year = date.getFullYear();

const myCar = new Car("Ford", 2014);
document.getElementById("demo").innerHTML=
"My car is " + myCar.age(year) + " years old.";

亲自试一试 »


浏览器支持

下表定义了完全支持 JavaScript 中的类的第一个浏览器版本:

Chrome 49 Edge 12 Firefox 45 Safari 9 Opera 36
Mar, 2016 Jul, 2015 Mar, 2016 Oct, 2015 Mar, 2016


"use strict"

类中的语法必须写在#{0}#中。

如果您不遵循#{0}#规则,将会遇到错误。

示例

在"strict mode"中,如果您使用变量而不声明它,您将会收到错误:

class Car {
  constructor(name, year) {
    this.name = name;
    this.year = year;
  }
  age() {
    // date = new Date();  // This will not work
    const date = new Date(); // This will work
    return date.getFullYear() - this.year;
  }
}
亲自试一试 »

了解有关 "strict mode" 的更多信息:JS 严格模式