• JavaScript 65 JavaScript 类 65.1 JavaScript 类简介


    JavaScript

    65 JavaScript 类

    65.1 JavaScript 类简介

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

    JavaScript 类是 JavaScript 对象的模板。

    65.1.1 JavaScript 类的语法

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

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

    【语法】

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

    【举个栗子】

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

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

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

    JavaScript 类不是对象。

    它是 JavaScript 对象的模板

    65.1.2 使用类

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

    let myCar1 = new Car("Ford", 2014);
    let myCar2 = new Car("Audi", 2019);
    
    • 1
    • 2

    在这里插入图片描述

    上面的例子使用 Car 类来创建两个 Car 对象

    在创建新对象时会自动调用构造方法(constructor method)。

    65.1.3 构造方法

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

    • 它必须有确切的名称的 “constructor”
    • 创建新对象时自动执行
    • 用于初始化对象属性
    • 如果自己没有定义构造方法,JavaScript 会添加一个空的构造方法。
    65.1.4 类方法

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

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

    请始终添加 constructor() 方法。

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

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

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

    class Car {
      constructor(name, year) {
        this.name = name;
        this.year = year;
      }
      age() {
        let date = new Date();
        return date.getFullYear() - this.year;
      }
    }
    
    let myCar = new Car("Ford", 2014);
    document.getElementById("demo").innerHTML =
    "My car is " + myCar.age() + " years old.";
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    可以向类方法发送参数:

    class Car {
      constructor(name, year) {
        this.name = name;
        this.year = year;
      }
      age(x) {
        return x - this.year;
      }
    }
    
    let date = new Date();
    let year = date.getFullYear();
    
    let myCar = new Car("Ford", 2014);
    document.getElementById("demo").innerHTML=
    "My car is " + myCar.age(year) + " years old.";
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在这里插入图片描述

    65.1.5 浏览器支持

    首个完全支持 JavaScript 类的浏览器版本:

    在这里插入图片描述

    65.1.6 “use strict”

    类中的语法必须以“严格模式”编写。

    如果不遵循“严格模式”规则,将收到错误消息。

    【举个栗子】

    在“严格模式”下,如果使用变量而不声明它,会得到错误:

    class Car {
      constructor(name, year) {
        this.name = name;
        this.year = year;
      }
      age() {
        // date = new Date();  // This will not work
        let date = new Date(); // This will work
        return date.getFullYear() - this.year;
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

  • 相关阅读:
    【不看答案挑战,今天你刷题了吗?】LeetCode33,题目+解析+答案
    VulnHub 兰皮昂 1 Lampiao
    QT之OpenGL 计算机图形学线性代数基本知识
    Ubuntu 22.04 配置VirtualBox安装Windows 10虚拟机
    C#中关于DevExpress的常用操作和帮助类项目工程内容说明
    【iOS-UIImagePickerController访问相机和相册】
    2022-11-14 mysql-loose scan
    HDLBits: 在线学习 SystemVerilog(一)-Problem 2-6
    ZLMediaKit学习(一):Window环境下推拉流
    设计模式之工厂方法模式(Factory Method Pattern)
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/127712116