简单理解 JS Class 中的 Static 是什么

2,541 阅读2分钟

今天在看一个有关 JavaScript Class 的 Static 属性的文档,一开始看的英文版本,描述的比较难以理解,然后看中文版,翻译的也比较难以理解。

英文

We can also assign a method to the class as a whole. Such methods are called static.

中文

我们可以把一个方法作为一个整体赋值给类。这样的方法被称为 静态的(static)。

实际上 Static 的概念很简单。在 JavaScript 中,static 是一个关键字,用于定义类的静态方法或静态属性。静态方法和静态属性属于类本身,而不是类的实例。这意味着它们可以直接通过类来调用,而无需实例化类。

静态方法是附加在类本身上的方法,而不是类的实例。它们通常用于执行与类相关的操作,而不依赖于类的实例状态。静态方法可以在类声明中使用 static 关键字进行定义,例如:

class MyClass {
  static staticMethod() {
    console.log('This is a static method');
  }
}

MyClass.staticMethod(); // 调用静态方法

在上面的例子中,staticMethod() 可以直接通过类 MyClass 来调用,而不需要创建 MyClass 的实例。静态方法在类的实例化过程中是不可继承的,它们只能由类本身调用。

类的静态属性也是通过 static 关键字进行定义的,它们是类的共享属性,不属于类的实例。静态属性可以在类声明中直接定义。例如:

class MyClass {
  static staticProperty = 'This is a static property';
}

console.log(MyClass.staticProperty); // 访问静态属性

在上面的例子中,staticProperty 是一个静态属性,可以直接通过类 MyClass 来访问。静态属性在类的实例中是不可用的,它们只能通过类本身来访问。

参考

  1. Static properties and methods
  2. 静态属性和静态方法