在ES6类中声明静态常量?

我想在中实现常量class,因为在代码中找到常量是很有意义的。

到目前为止,我一直在使用静态方法实现以下变通方法:

class MyClass {

static constant1() { return 33; }

static constant2() { return 2; }

// ...

}

我知道有可能摆弄原型,但许多人建议不要这样做。

有没有更好的方法在ES6类中实现常量?

回答:

您可以执行以下操作:

const模块中 导出a 。根据您的用例,您可以:

export const constant1 = 33;

并在必要时从模块导入该文件。或者,基于您的静态方法思想,您可以声明一个staticget访问器:

const constant1 = 33,

constant2 = 2;

class Example {

static get constant1() {

return constant1;

}

static get constant2() {

return constant2;

}

}

这样,您将不需要括号:

const one = Example.constant1;

然后,就像您说的那样,由于a class只是函数的语法糖,因此您可以仅添加一个不可写的属性,如下所示:

class Example {

}

Object.defineProperty(Example, 'constant1', {

value: 33,

writable : false,

enumerable : true,

configurable : false

});

Example.constant1; // 33

Example.constant1 = 15; // TypeError

如果我们可以做以下事情可能会很好:

class Example {

static const constant1 = 33;

}

但是不幸的是,此类属性语法仅在ES7提议中,即使那样,它也不允许添加const到属性中。

以上是 在ES6类中声明静态常量? 的全部内容, 来源链接: utcz.com/qa/419111.html

回到顶部