DevPath · Aprende a programar ESPTEN

Objetos

Métodos y this

Métodos: funciones dentro de objetos

Hasta ahora tus objetos solo guardaban datos. Pero también pueden actuar: una propiedad cuyo valor es una función se llama método, y es lo que permite que el objeto "haga cosas" en lugar de solo almacenarlas:

const calculadora = {
  sumar: function (a, b) {
    return a + b;
  },
  // sintaxis abreviada (ES6):
  restar(a, b) {
    return a - b;
  },
};
console.log(calculadora.sumar(2, 3));  // 5
console.log(calculadora.restar(7, 4)); // 3

La palabra this

¿Y cómo accede un método a los datos de su propio objeto? Con this. Dentro de un método, this apunta al objeto a través del cual se llama al método. En el caso normal, objeto.metodo(), ese objeto es el de la izquierda del punto, así que this es como decir "yo mismo": te da acceso a sus otras propiedades.

const persona = {
  nombre: "Ana",
  saludar() {
    return "Hola, soy " + this.nombre;
  },
};
console.log(persona.saludar()); // "Hola, soy Ana"

⚠️ Trampa clásica: this no depende de dónde se define el método, sino de cómo se llama. Si "sacas" el método de su objeto y lo llamas suelto, this se queda huérfano y deja de apuntar a ese objeto:

const f = persona.saludar;
f(); // this ya no es persona → this.nombre sería undefined

Veremos cómo fijar this (con bind, o usando clases) en el módulo de POO.

Importante: las arrow functions no tienen su propio this, por eso para métodos de objeto que usen this suele preferirse la sintaxis normal o la abreviada, no la flecha.

Ejemplos

Una cuenta bancaria que se modifica a sí misma con this

const cuenta = {
  saldo: 100,
  depositar(cantidad) {
    this.saldo = this.saldo + cantidad;
    return this.saldo;
  },
};
console.log(cuenta.depositar(50)); // 150
console.log(cuenta.saldo);         // 150
Pon esto en práctica

DevPath es un curso práctico: aquí lees la teoría; en la app la pones en práctica con ejercicios que se ejecutan de verdad, sin conexión.

Empezar gratis en la app →
← Literales de objeto y acceso a propiedadesRecorrer objetos: keys, values y entries →