Resumo : neste tutorial, você aprenderá sobre os métodos estáticos do JavaScript e como usá-los de maneira eficaz.
Introdução aos métodos estáticos JavaScript
Por definição, os métodos estáticos estão vinculados a uma classe , não às instâncias dessa classe. Portanto, os métodos estáticos são úteis para definir métodos auxiliares ou utilitários.
Para definir um método estático antes do ES6, você o adiciona diretamente ao construtor da classe. Por exemplo, suponha que você tenha um Person
tipo como segue:
function Person(name) {
this.name = name;
}
Person.prototype.getName = function () {
return this.name;
};
Linguagem de código: JavaScript ( javascript )
O seguinte adiciona um método estático chamado createAnonymous()
ao Person
tipo:
Person.createAnonymous = function (gender) {
let name = gender == "male" ? "John Doe" : "Jane Doe";
return new Person(name);
};
Linguagem de código: JavaScript ( javascript )
O createAnonymous()
método é considerado estático porque não depende de nenhuma instância do Person
tipo para seus valores de propriedade.
Para chamar o createAnonymous()
método, você usa o Person
tipo em vez de suas instâncias:
var anonymous = Person.createAnonymous();
Linguagem de código: JavaScript ( javascript )
Métodos estáticos JavaScript no ES6
No ES6, você define métodos estáticos usando a static
palavra-chave. O exemplo a seguir define um método estático chamado createAnonymous()
para a Person
classe:
class Person {
constructor(name) {
this.name = name;
}
getName() {
return this.name;
}
static createAnonymous(gender) {
let name = gender == "male" ? "John Doe" : "Jane Doe";
return new Person(name);
}
}
Linguagem de código: JavaScript ( javascript )
Para invocar o método estático, você usa a seguinte sintaxe:
let anonymous = Person.createAnonymous("male");
Linguagem de código: JavaScript ( javascript )
Se você tentar chamar o método estático de uma instância da classe, receberá um erro. Por exemplo:
let person = new Person('James Doe');
let anonymous = person.createAnonymous("male");
Linguagem de código: JavaScript ( javascript )
Erro:
TypeError: person.createAnonymous is not a function
Linguagem de código: JavaScript ( javascript )
Chamando um método estático do construtor de classe ou de um método de instância
Para chamar um método estático de um construtor de classe ou de um método de instância, você usa o nome da classe, seguido pelo .
e pelo método estático:
className.staticMethodName();
Linguagem de código: CSS ( css )
Alternativamente, você pode usar a seguinte sintaxe:
this.constructor.staticMethodName();
Linguagem de código: CSS ( css )
Resumo
- Os métodos estáticos JavaScript são compartilhados entre instâncias de uma classe. Portanto, eles estão vinculados à classe.
- Chame os métodos estáticos pelo nome da classe, não pelas instâncias dessa classe.
- Use
className.staticMethodName()
outhis.constructor.staticMethodName()
para chamar um método estático em um construtor de classe ou um método de instância.