Métodos: Objetos com Vida Própria
O que vais aprender nesta aula:
- O que é um Método (Função dentro de um Objeto)
- A palavra-chave
this(O Contexto) - Como o objeto pode falar sobre si mesmo
🧠 Teoria (com Analogia e Contexto Real)
Até agora, os nossos objetos eram cadernos estáticos (tinham dados). Mas na vida real, um "Gato" não tem só "cor" e "peso". Ele também "mia", "corre" e "salta".
🦸♂️ Analogia do Super-Herói
Propriedades: Nome (Super-Homem), Capa (Vermelha). São dados (substantivos).
Métodos: Voar(), Lutar(), Salvar(). São ações (verbos).
This: Quando o Super-Homem diz "A minha capa", ele está a usar o this. "Minha" refere-se a ELE PRÓPRIO.
💻 Prática (Orientada e Progressiva)
Vamos dar vida ao código:
Exemplo 1: Criar um Método
let cao = {
nome: "Boby",
ladrar: function() {
console.log("Au Au!");
}
};
cao.ladrar(); // "Au Au!"
Exemplo 2: Usar o `this`
O this permite ao objeto aceder aos seus próprios dados.
let pessoa = {
nome: "Maria",
saudar: function() {
// "Eu sou a " + o_meu_próprio_nome
console.log("Olá, eu sou a " + this.nome);
}
};
pessoa.saudar(); // "Olá, eu sou a Maria"
Exemplo 3: Mas e se mudar o nome?
pessoa.nome = "Joana";
pessoa.saudar(); // "Olá, eu sou a Joana"
// (A função adaptou-se automaticamente porque usou o this!)
() => {} como métodos se precisares do this. As Arrow Functions não sabem quem é o this (elas são "burras" nesse aspeto). Usa sempre function() normal dentro de objetos.
✅ Verificação de Conhecimento
1. O que é um "Método" em JavaScript?
2. Para que serve a palavra `this` dentro de um método?
3. Devo usar Arrow Functions para métodos com `this`?
🧩 Desafio Prático
A Conta Bancária Simplificada
Cria um objeto conta com:
- Propriedade saldo (começa em 100).
- Método verSaldo() que mostra "Tens X euros."
- Método depositar(valor) que aumenta o saldo.
let conta = {
saldo: 100,
verSaldo: function() { ... },
depositar: function(valor) { ... }
};
conta.depositar(50);
conta.verSaldo(); // Deverá dizer 150
Mostrar Solução
let conta = {
saldo: 100,
verSaldo: function() {
console.log("Tens " + this.saldo + " euros.");
},
depositar: function(valor) {
this.saldo = this.saldo + valor;
// Ou: this.saldo += valor;
}
};
conta.depositar(50);
conta.verSaldo(); // "Tens 150 euros."
📌 Explicação: O segredo foi usar this.saldo para ler e alterar o valor da carteira do próprio objeto.