JavaScript 类

类是用于创建对象的模板。他们用代码封装数据以处理该数据。JS中的类建立在原型上,但也具有某些语法和语义未与ES5类相似语义共享。

在 JavaScript 中,实际上,类是“特殊的函数”,就像你能够定义的函数表达式和函数声明一样,类语法有两个组成部分:类表达式和类声明。

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

始终添加名为constructor()的方法:

  1. class ClassName {
  2. constructor() { ... }
  3. }

实例

  1. class Car {
  2. constructor(name, year) {
  3. this.name = name;
  4. this.year = year;
  5. }
  6. }

上面的例子创建了一个名为“Car”的类。

这个类有两个初始属性:“name” 和 “year”。

JavaScript类不是对象,它是JavaScript对象的 模板

JavaScript 使用类

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

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h2>JavaScript Class</h2>
  5. <p>如何使用 JavaScript 类</p>
  6. <p id="demo"></p>
  7. <script>
  8. class Car {
  9. constructor(name, year) {
  10. this.name = name;
  11. this.year = year;
  12. }
  13. }
  14. myCar = new Car("福特", 2014);
  15. document.getElementById("demo").innerHTML =
  16. myCar.name + " " + myCar.year;
  17. </script>
  18. </body>
  19. </html>

上面的示例使用Car类创建两个Car对象。

提示:构造函数方法在创建新对象时自动调用。


构造函数方法

构造函数方法是一种特殊方法:

  • 它必须有确切的名字“constructor”

  • 它在创建新对象时自动执行

  • 它用于初始化对象属性

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


类方法

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

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

始终添加一个构造函数 constructor() 方法。

然后可以添加多个方法。

语法
  1. class ClassName {
  2. constructor() { ... }
  3. method_1() { ... }
  4. method_2() { ... }
  5. method_3() { ... }
  6. }

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

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h2>JavaScript 类方法</h2>
  5. <p>如何定义和使用类方法。</p>
  6. <p id="demo"></p>
  7. <script>
  8. class Car {
  9. constructor(name, year) {
  10. this.name = name;
  11. this.year = year;
  12. }
  13. age() {
  14. let date = new Date();
  15. return date.getFullYear() - this.year;
  16. }
  17. }
  18. let myCar = new Car("福特", 2014);
  19. document.getElementById("demo").innerHTML =
  20. "我的汽车已经 " + myCar.age() + " 岁了.";
  21. </script>
  22. </body>
  23. </html>

可以向类方法发送参数:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h2>JavaScript 类方法</h2>
  5. <p>将参数传递给 age() 方法。</p>
  6. <p id="demo"></p>
  7. <script>
  8. class Car {
  9. constructor(name, year) {
  10. this.name = name;
  11. this.year = year;
  12. }
  13. age(x) {
  14. return x - this.year;
  15. }
  16. }
  17. let date = new Date();
  18. let year = date.getFullYear();
  19. let myCar = new Car("福特", 2014);
  20. document.getElementById("demo").innerHTML=
  21. "我的汽车已经 " + myCar.age(year) + " 岁了.";
  22. </script>
  23. </body>
  24. </html>

浏览器支持

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

目标
Chrome 49IE / Edge 12Firefox 45Safari 9Opera 36
2016 年 3 月2015 年 6 月2016 年 3 月2015 年 10 月2016 年 3 月