Métodos estáticos JavaScript

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 Persontipo 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 Persontipo:

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 Persontipo para seus valores de propriedade.

Para chamar o createAnonymous()método, você usa o Persontipo 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 staticpalavra-chave. O exemplo a seguir define um método estático chamado createAnonymous()para a Personclasse:

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 functionLinguagem 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()ou this.constructor.staticMethodName()para chamar um método estático em um construtor de classe ou um método de instância.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *