ES6 – Chamar método estático dentro de uma class

Eu tenho essa class que faz uma chamada interna para um método estático:

export class GeneralHelper extends BaseHelper{ static is(env){ return config.get('env:name') === env; } static isProd(){ return GeneralHelper.is('prod'); } } 

Existem palavras-chave que eu possa usar para replace o nome da class na linha abaixo:

 GeneralHelper.is('prod'); 

No PHP existem self , static etc. O ES6 fornece algo semelhante a estes?

TY.

Se você está chamando a function estática de dentro de uma instância, o caminho certo para se referir à function estática da class é:

this.constructor.functionName();

es6 chamam methods estáticos

É o mesmo que chamar um método em um object comum . Se você chamar o método GeneralHelper.isProd() , o GeneralHelper estará disponível como this no método, para que você possa usar

 class GeneralHelper { static is(env) { … } static isProd(){ return this.is('prod'); } } 

No entanto, isso não funcionará quando o método for passado como uma function de retorno de chamada, como de costume . Além disso, pode ser diferente de acessar o GeneralHelper explicitamente quando alguém herda isProd da sua class e sobrescrever is , InheritedHelper.isProd() produzirá outros resultados.

Se você quiser chamar methods estáticos a partir de methods de instância, veja aqui . Observe também que uma class que só define methods estáticos é um excêntrico, você pode querer usar um object simples em seu lugar.

Ambas as respostas aqui estão corretas e são boas, mas eu queria adicionar mais detalhes com base no título desta questão.

Quando vi “ES6 – Chamar método estático dentro de uma class”, soava como “chamar um método estático (de um método não estático) dentro de uma class”. Def não o que o asker pergunta inicial está pedindo nos detalhes.

Mas para quem quer saber como chamar um método estático de um método não estático dentro de uma class, você pode fazer assim:

 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!" 

A idéia é que o método estático pode ser chamado sem criar uma nova instância da class. Isso significa que você pode chamá-lo dentro do método de uma instância da mesma maneira que você o chamaria fora da instância.

Mais uma vez, eu sei que não é o que o detalhe da pergunta estava pedindo, mas isso poderia ser útil para outras pessoas.