CodeGym /Cursos /Frontend SELF PT /Métodos de objeto

Métodos de objeto

Frontend SELF PT
Nível 36 , Lição 1
Disponível

7.1 Criando métodos de objeto

Métodos de objeto em JavaScript são funções que estão associadas a objetos e podem realizar ações nesses objetos. Métodos permitem que os objetos tenham seu comportamento, o que os torna uma parte importante da programação orientada a objetos. Abaixo, vamos ver como criar e usar métodos de objeto.

Métodos de objeto podem ser criados de várias maneiras. Vamos ver os principais.

1. Literal de objeto

Métodos podem ser criados diretamente no literal de objeto usando funções.

Neste exemplo, o objeto person tem um método greet() que retorna uma string usando a propriedade name do objeto:

JavaScript
    
      let person = {
        name: 'John',
        age: 30,
        greet: function() {
          return `Hello, my name is ${this.name}`;
        }
      };

      console.log(person.greet()); // Vai mostrar: Hello, my name is John
    
  

2. Sintaxe abreviada de métodos

Com o ES6, surgiu uma sintaxe abreviada para criar métodos de objeto.

Essa sintaxe torna o código mais conciso e legível:

JavaScript
    
      let person = {
        name: 'John',
        age: 30,
        greet() {
          return `Hello, my name is ${this.name}`;
        }
      };

      console.log(person.greet()); // Vai mostrar: Hello, my name is John
    
  

3. Adicionando métodos após a criação do objeto

Métodos podem ser adicionados a um objeto depois que ele for criado.

Neste exemplo, o método greet() é adicionado ao objeto person após sua criação:

JavaScript
    
      let person = {
        name: 'John',
        age: 30
      };

      person.greet = function() {
        return `Hello, my name is ${this.name}`;
      };

      console.log(person.greet()); // Vai mostrar: Hello, my name is John
    
  

4. Uso de função construtora

Uma função construtora permite criar métodos para todas as instâncias de um objeto.

Neste exemplo, o método greet() é criado para cada instância de objeto criada usando a função construtora Person():

JavaScript
    
      function Person(name, age) {
        this.name = name;
        this.age = age;
        this.greet = function() {
          return `Hello, my name is ${this.name}`;
        };
      }

      let john = new Person('John', 30);
      let jane = new Person('Jane', 25);

      console.log(john.greet()); // Vai mostrar: Hello, my name is John
      console.log(jane.greet()); // Vai mostrar: Hello, my name is Jane
    
  

7.2 Usando métodos de objeto

1. Acesso a métodos através do ponto

Métodos de objeto podem ser chamados usando a sintaxe de ponto:

JavaScript
    
      let person = {
        name: 'John',
        age: 30,
        greet() {
          return `Hello, my name is ${this.name}`;
        }
      };

      console.log(person.greet()); // Vai mostrar: Hello, my name is John
    
  

2. Acesso a métodos através de colchetes

Métodos de objeto também podem ser chamados usando colchetes:

JavaScript
    
      let person = {
        name: 'John',
        age: 30,
        greet() {
          return `Hello, my name is ${this.name}`;
        }
      };

      let result = person['greet']();
      console.log(result); // Vai mostrar: Hello, my name is John
    
  

3. Chamada de método dentro de outro método

Métodos de objeto podem chamar outros métodos do mesmo objeto.

Neste exemplo, os métodos sum() e mul() usam valores definidos pelo método setValues():

JavaScript
    
      let calculator = {
        a: 0,
        b: 0,
        setValues(a, b) {
          this.a = a;
          this.b = b;
        },
        sum() {
          return this.a + this.b;
        },
        mul() {
          return this.a * this.b;
        }
      };

      calculator.setValues(2, 3);

      console.log(calculator.sum()); // Vai mostrar: 5
      console.log(calculator.mul()); // Vai mostrar: 6
    
  

4. Uso de this em métodos

A palavra-chave this nos métodos de objeto refere-se ao próprio objeto, o que permite acessar suas propriedades e outros métodos:

JavaScript
    
      let car = {
        brand: 'Toyota',
        model: 'Camry',
        getInfo() {
          return `Brand: ${this.brand}, Model: ${this.model}`;
        }
      };

      console.log(car.getInfo()); // Vai mostrar: Brand: Toyota, Model: Camry
    
  

5. Passando métodos como callbacks

Quando métodos de objeto são passados como callbacks, é importante considerar o valor de this:

JavaScript
    
      let person = {
        name: 'John',
        age: 30,
        greet() {
          console.log(`Hello, my name is ${this.name}`);
        }
      };

      setTimeout( person.greet, 1000 ); // Vai mostrar: Hello, my name is undefined
    
  

Neste exemplo, o valor de this é perdido quando o método greet() é passado como callback para setTimeout(). Como resultado, this dentro de greet() refere-se ao objeto global window. Em navegadores, o objeto window tem a propriedade name, que por padrão é uma string vazia "". Então é mostrado "Hello, my name is". Para manter o valor correto de this, é possível usar o método bind(), que vincula a função a um contexto específico:

JavaScript
    
      setTimeout(person.greet.bind(person), 1000); // Vai mostrar: Hello, my first name is John
    
  

Ou usar uma função de seta:

JavaScript
    
      setTimeout(() => person.greet(), 1000); // Vai mostrar: Hello, my first name is John
    
  

7.3 Compartilhando métodos

1. Herdando métodos através de protótipos

Métodos podem ser adicionados aos protótipos de objetos para que estejam disponíveis para todas as instâncias:

JavaScript
    
      function Person(name, age) {
        this.name = name;
        this.age = age;
      }

      Person.prototype.greet = function() {
        return `Hello, my name is ${this.name}`;
      };

      let john = new Person('John', 30);
      let jane = new Person('Jane', 25);

      console.log(john.greet()); // Vai mostrar: Hello, my name is John
      console.log(jane.greet()); // Vai mostrar: Hello, my name is Jane
    
  

2. Usando métodos de outros objetos

Métodos de um objeto podem ser chamados para outro objeto usando o método call() ou apply():

JavaScript
    
      let person1 = {
        name: 'John',
        age: 30,
        greet() {
          return `Hello, my name is ${this.name}`;
        }
      };

      let person2 = {
        name: 'Jane',
        age: 25
      };

      console.log(person1.greet.call(person2)); // Vai mostrar: Hello, my name is Jane
    
  
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION