推荐答案
Class Fields 是 ECMAScript 2019(ES10)引入的新特性,主要包括以下几项:
实例字段(Instance Fields):
- 允许在类中直接定义实例属性,而不需要在构造函数中初始化。
- 语法:
fieldName = value;
静态字段(Static Fields):
- 允许在类中直接定义静态属性,而不需要在类外部定义。
- 语法:
static fieldName = value;
私有字段(Private Fields):
- 允许在类中定义私有属性,外部无法直接访问。
- 语法:
#fieldName = value;
静态私有字段(Static Private Fields):
- 允许在类中定义静态私有属性,外部无法直接访问。
- 语法:
static #fieldName = value;
静态块(Static Blocks):
- 允许在类中定义静态初始化块,用于执行静态字段的初始化逻辑。
- 语法:
static { ... }
本题详细解读
实例字段(Instance Fields)
实例字段允许在类中直接定义实例属性,而不需要在构造函数中初始化。这使得代码更加简洁和易读。
class MyClass { instanceField = 'instance value'; } const instance = new MyClass(); console.log(instance.instanceField); // 输出: instance value
静态字段(Static Fields)
静态字段允许在类中直接定义静态属性,而不需要在类外部定义。这使得静态属性的定义更加集中和清晰。
class MyClass { static staticField = 'static value'; } console.log(MyClass.staticField); // 输出: static value
私有字段(Private Fields)
私有字段允许在类中定义私有属性,外部无法直接访问。私有字段使用 #
符号作为前缀。
-- -------------------- ---- ------- ----- ------- - ------------- - -------- ------- ----------------- - ------ ------------------- - - ----- -------- - --- ---------- ---------------------------------------- -- --- ------- ----- ------------------------------------ -- --- -----------
静态私有字段(Static Private Fields)
静态私有字段允许在类中定义静态私有属性,外部无法直接访问。静态私有字段同样使用 #
符号作为前缀。
-- -------------------- ---- ------- ----- ------- - ------ ------------------- - ------- ------- ------- ------ ----------------------- - ------ ---------------------------- - - --------------------------------------------- -- --- ------ ------- ----- ----------------------------------------- -- --- -----------
静态块(Static Blocks)
静态块允许在类中定义静态初始化块,用于执行静态字段的初始化逻辑。静态块在类加载时执行。
-- -------------------- ---- ------- ----- ------- - ------ ------------ ------ - ------------------- - ------------ ------- - - --------------------------------- -- --- ----------- -----
这些新特性使得类的定义更加灵活和强大,同时也提高了代码的可读性和维护性。