在 ES5 中,类变量通常使用 FrameWork.Class() 模式定义。然而,在 ES6 中,类声明本身并不支持类变量。
ES6 中没有类变量是故意的。 TC39 旨在将类声明与成员定义分开。类定义应该定义类的功能,而成员(变量和方法)应该在其他地方定义。
定义类变量的一个选项是在构造函数中分配它们:
constructor() { this.MY_VAR = true; }
但是,这会使构造函数变得混乱,尤其是在有许多类参数的情况下。
提议的 ES7 功能“属性初始化器”提供了一种更简洁的语法,用于在类声明和表达式中定义实例变量:
class MyClass { foo = bar; }
另一种方法是创建一个类配置处理程序,在初始化期间将变量附加到类。例如,使用 WeakMap:
const classConfig = new WeakMap(); class ConfiguredClass { constructor() { const config = classConfig.get(this.constructor); if (config) { for (const [key, value] of Object.entries(config)) { this[key] = value; } } } } class MyConfiguredClass extends ConfiguredClass {} classConfig.set(MyConfiguredClass, { variable: 'string', variable2: true });
Babel 和 TypeScript 都提供定义类变量的语法:
// Babel class MyClass { varName = value; } // TypeScript class MyClass { varName: string = value; }
以上是在没有原生支持的情况下,我们如何在 ES6 中定义类变量?的详细内容。更多信息请关注PHP中文网其他相关文章!