静的メソッドの内部呼び出しを行うこのクラスがあります:
export class GeneralHelper extends BaseHelper{
static is(env){
return config.get('env:name') === env;
}
static isProd(){
return GeneralHelper.is('prod');
}
}
下の行のクラス名を置き換えるために使用できるキーワードはありますか?
GeneralHelper.is('prod');
PHPにはself
、static
などがあります。ES6はこれらと同様のものを提供しますか?
TY.
通常のオブジェクトでメソッドを呼び出す と同じです。 GeneralHelper.isProd()
メソッドを呼び出すと、GeneralHelper
はメソッド内でthis
として使用できるため、使用できます
class GeneralHelper {
static is(env) { … }
static isProd(){
return this.is('prod');
}
}
ただし、メソッドがコールバック関数 通常どおり として渡される場合、これは機能しません。また、誰かがクラスからGeneralHelper
を継承し、isProd
を上書きしてInheritedHelper.isProd()
が他の結果を生成するときに、is
に明示的にアクセスすることとは異なる場合があります。
インスタンスメソッドから静的メソッドを呼び出す場合は、 here を参照してください。また、静的メソッドのみを定義するクラスは奇妙なものであることに注意してください。代わりにプレーンオブジェクトを使用することもできます。
ここでの答えは両方とも正しいものですが、この質問のタイトルに基づいて詳細を追加したかったのです。
「ES6-クラス内の静的メソッドを呼び出す」を見たとき、「クラス内の静的メソッドを(非静的メソッドから)呼び出す」ように聞こえました。最初の質問の質問者が詳細で尋ねているものではなく、Def。
ただし、クラス内の非静的メソッドから静的メソッドを呼び出す方法を知りたい場合は、次のようにできます。
class MyClass {
myNonStaticMethod () {
console.log("I'm not static.")
MyClass.myStaticMethod()
}
static myStaticMethod () {
console.log("hey, I'm static!")
}
}
MyClass.myStaticMethod() // will log "hey, I'm static!"
const me = new MyClass()
me.myNonStaticMethod() // will log "I'm not static" and then "hey, I'm static!"
その考え方は、クラスの新しいインスタンスを作成せずに静的メソッドを呼び出すことができるということです。つまり、インスタンスの外部で呼び出すのと同じ方法で、インスタンスのメソッドの内部で呼び出すことができます。
繰り返しますが、私はそれが質問の詳細が求めていたものではないことを知っていますが、これは他の人の役に立つかもしれません。