Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Método construtor
  2. Declarar método
  3. Métodos Get e Set
  4. Simular sobrecarga
  5. Método estático
  6. Uso do this
  7. Método computado
  8. Método computado: interpolação

De forma simples, métodos são "funções" contidas em objetos. Atráves dos métodos podemos "trocar" informações com nossos objetos e realizar ações desejadas.

Nesta parte do tutorial vamos aprender a como declarar métodos, métodos com parâmetros, métodos Get e Set e sobrecarga de métodos.

Os de conceitos de P.O.O podem ser vistos em Conceitos O.O.

Por padrão, toda classe criada possui um construtor, sem parâmetros, que é criado automaticamente e invocado quando instânciamos um objeto. Métodos construtores são métodos especiais para configurar uma nova instância.

Exemplo 1
class minhaClasse 
{
    //omitido
}

let x = new minhaClasse();  //construtor padrão

Saída
-

Podemos explicitamente declara um construtor padrão, sem argumentos, de acordo com a sintaxe que pode ser conferida abaixo:

Sintaxe
class nome_classe
{
  constructor()
  {
    //corpo
  }
}
Exemplo 2
class nome_classe
{
  atributo;
  constructor()
  {
    this.atributo = 100;
  }
}
Saída
-

Para a declaração um construtor com parâmetros, basta declará-lo informando os parâmetros separados por (,) como já foi feito nos exemplos de declaração de parâmetros em funções.

Sintaxe
class nome_classe
{
  constructor( <lista_parametros> )
  {
    //corpo
  }
}

Exemplo 3
class minhaClasse {
  idade = 0;
  nome = '';
  
  constructor(nome,idade){
    this.nome = nome;
    this.idade = idade;
  }
}

let x = new minhaClasse('teste',999);
console.log(x.idade);
console.log(x.nome);
Saída
999
teste

Em Javascript, diferente de outras linguagens O.O, não permite que uma classe tenha mais de um construtor. Um erro é gerado pelo compilador/interpretador como pode ser observado no exemplo abaixo:

Exemplo 4
class minhaClasse {
  constructor(){}
  constructor(nome,idade){
    this.nome = nome;
    this.idade = idade;
  }
}
Saída
SyntaxError: A class may only have one constructor

Para declararmos métodos em uma classe, utilizamos a sintaxe que pode ser vista abaixo:

Sintaxe
class nome_classe
{
    nome_metodo( <lista_parametros> )
    {
       //corpo 
    }
}
Exemplo 5
class minhaClasse
{
  metodo()
  {
    //corpo omitido
  }
}
Saída
-

Para invocar um método de uma classe, utilizamos o operador de acesso (.) seguido do nome do método desejado.

Sintaxe
nome_objeto.nome_metodo();
Exemplo 2
class minhaClasse {
  metodo(p1, p2){
    console.log(p1,p2);
  }
}
let x = new minhaClasse('teste',999);
x.metodo(1,2);
Saída
teste 999

Os métodos Get e Set são métodos “especiais” vinculados a atributos de classes. São usados para atribuir e recuperar seus valores. A declaração desses métodos são feitos como abaixo:

Sintaxe
class nome_classe{
    get nome_metodo()
    {
        return this.nome_atributo
    }
    set nome_metodo(parametro)
    {
        this.nome_atributo = parametro
    }
}

Como pode ser visto na sintaxe acima, o método declarado como get deve retornar o valor de um atributo e o método set deve atribuir uma valor a um atributo. Não é necessário utilizar () ao invocar esses métodos.

Exemplo 3
class minhaClasse
{
  atributo;
  get Atributo(){
    return this.atributo;
  }
  set Atributo(p){
    this.atributo = p;
  }
}

let x = new minhaClasse();
x.Atributo = "Teste";
console.log(x.Atributo);
Saída
Teste

Sobrecarga é um recurso da P.O.O que nos permite declarar que vários métodos como o mesmo nome e tipo de retorno, e diferentes números de parâmetros.

A linguagem JS não suporta o recurso de sobrecarga. Uma forma de contornar essa ausência é criar um método que nos auxilie a simular uma sobrecarga.

Exemplo 4
class minhaClasse
{  
  metodo_sobrecarga() //metódo principal
  {
    
    let metodo1 = function() //metódo sem parâmetro
    {
      console.log("metodo1");
    }
    
    let metodo2 = function(param) //método com parâmetro
    {
      console.log(param);
    }
    
    //execução de sobrecarga de acordo com número de argumentos
    let args = arguments.length; 
    if (args == 0){
      metodo1();
    }
    else if (args == 1){
      metodo2(arguments[0])
    }
  }
}

let x = new minhaClasse();
x.metodo_sobrecarga();
x.metodo_sobrecarga("metodo2");
Saída
metodo1
metodo2

No exemplo acima, metodo1 e método2 são funções anônimas que representam as sobrecargas do método metodo_sobrecarga.

Com arguments.length podemos recuperar o número de argumentos passados para o método metodo_sobrecarga. Assim, é feita uma decisão de qual sobrecargas devemos executar, metodo1 ou método2.

Os conceitos de sobrescrita de método e sobrecarga de método não podem ser confundidos.

Os métodos estáticos são métodos que são declarados com o modificador static que permite que esses possam ser invocados sem a necessidade de instanciar um objeto.

Sintaxe
static nome_metodo(<lista_parametros>)
{
//corpo
}
Exemplo 5
class minhaClasse
{
  static metodo(){
    console.log("método estático");
  }
}

minhaClasse.metodo();
Saída
método estático

Os métodos declarados ou definidos utilizando a palavra reservada static só podem acessar propriedades e outros recursos declarados da mesma forma.

O this, utilizado em conjunto com métodos, possui os conceitos semelhantes aplicados a atributos já visto em POO: Classe e Atributos. Com o this podemos fazer a distinção de quais recursos estamos acessando: local ou classe, por exemplo.

Sintaxe
this.nome_metodo(<lista_argumentos>);
Exemplo 6
class minhaClasse {
  atributo = 0;
  metodo1(){
    console.log("metodo1");
  }
  metodo2(){
    this.metodo1();
  }
}

obj = new minhaClasse();
obj.metodo2()
Saída
metodo1

O this também pode ser utilizando com herança de classes. O assunto herança pode ser visto em POO: Herança.

JS fornece o recurso de método computado. Esse podem ser invocado por seus nomes contidos em string, por exemplo.

Sintaxe
let nome_metodo = "nome_metodo";

let nome_objeto = {

    [nome_metodo](<lista_parametros>){
        //corpo
    }
}
Exemplo 7
let nome_metodo1 = "metodo1";
let nome_metodo2 = "metodo2";

let objeto = {
    [nome_metodo1](p1, p2) { 
        console.log(p1, p2);
    },
    [nome_metodo2]() { 
        console.log("metodo sem parametro");
    }
};
objeto.metodo1(1,2);
objeto.metodo2();
Saída
1 2
metodo sem parametro

O this também pode ser utilizando com herança de classes. O assunto herança pode ser visto em POO: Herança.

  1. 18/08/2025 - revisão 3 - Ajustes: pontuais, target de links, sintaxese 'objetivos'; Adição: método computado
  2. 26/09/2024 - revisão 2 - Correção: numeração de exemplos, algumas sintaxes; remoção: texto errado sobre 'herança';
  3. 05/10/2023 - revisão 1 - correção de links, layout, e erros gramaticais
  4. 31/05/2023 - versão inicial