2022-03-01 JavaScript でクラス定数(スタティックプロパティ)
JavaScriptでクラス定数っぽいことしたい場合は staticプロパティ が使える。
class Triple {
static description = 'I triple any number you provide';
}
Triple.description
// 'I triple any number you provide'
staticメソッドからstaticプロパティ呼び出し
class StaticMethodCall {
static description = 'I triple any number you provide';
static staticMethod() {
return `description: ${this.description}`
}
}
StaticMethodCall.staticMethod()
// 'description: I triple any number you provide'
メソッドからstaticプロパティ呼び出し
class StaticMethodCall {
method() {
return this.constructor.description;
}
static description = 'I triple any number you provide';
}
new StaticMethodCall().method()
// 'I triple any number you provide'
静的ゲッター
普通のstaticプロパティだと下記の通り書き換えが可能。
class Foo {
static bar = 'static';
}
Foo.bar
Foo.bar = "x" // 書き換え可能
Foo.bar
そんな時は静的ゲッターが使える。
class MyConstants {
static get foo() {
return 'foo';
}
}
console.log(MyConstants.foo); // 'foo'
MyConstants.foo = 'bar';
console.log(MyConstants.foo); // 'foo' です。静的ゲッターの値は変更できません