gpt4 book ai didi

javascript - 在 ES6 类中声明静态常量?

转载 作者:IT老高 更新时间:2023-10-28 13:12:08 25 4
gpt4 key购买 nike

我想在 class 中实现常量,因为这是在代码中定位它们的意义所在。

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

class MyClass {
static constant1() { return 33; }
static constant2() { return 2; }
// ...
}

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

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

最佳答案

您可以做以下几件事:

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

export const constant1 = 33;

并在必要时从模块中导入。或者,基于您的静态方法理念,您可以声明一个 static get accessor :

const constant1 = 33,
constant2 = 2;
class Example {

static get constant1() {
return constant1;
}

static get constant2() {
return constant2;
}
}

这样,你就不需要括号了:

const one = Example.constant1;

Babel REPL Example

然后,正如您所说,由于 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;
}

但不幸的是这个class property syntax仅在 ES7 提案中,即使那样它也不允许将 const 添加到属性中。

关于javascript - 在 ES6 类中声明静态常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32647215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com