JS Class 中的 Static 是什么

今天在看一个有关 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. 静态属性和静态方法

【总结比较】type 和 interface 的区别

在 TypeScript 中,typeinterface是用来定义类型的关键字,它们有一些区别和特点。

相同点

不同点

总结

其它

参考

  1. TypeScript 中 type 和 interface 有什么区别? - 知乎
  2. Typescript 中的 interface 和 type 到底有什么区别 - 掘金
  3. TS 篇-type 和 interface 的区别 - 掘金
  4. type 与 interface 的区别,你真的懂了吗? - 掘金
  5. 元组 · TypeScript 入门教程

【总结】JavaScript 变量作用域和闭包

  1. Lexical Environment
  1. 变量
  1. 嵌套函数
  1. 闭包
  1. 垃圾回收
  1. 其他

【总结】async 和 await 使用时的注意点

  1. 使用await命令时,最好将其放在try...catch代码块中处理可能的rejected结果,或者使用catch()方法捕获错误。
  2. 多个await命令后面的异步操作如果互不依赖,应该同时触发,可以使用Promise.all()方法或者使用多个变量并行赋值的方式。
  3. await命令只能在async函数中使用,如果在普通函数中使用会报错。如果在普通函数中使用await,可能会导致异步操作并发执行而不是继发执行,正确的做法是使用for循环或者reduce()方法。
  4. async函数可以保留运行堆栈,不会中断函数执行,可以在异步任务运行期间继续执行其他操作。这样可以保留错误堆栈的完整性。

【总结比较】遍历语法的比较

使用for...of循环可以更方便地遍历数组,同时具有灵活控制和统一操作接口的优势。