Identificador this

Clase 23 de 80Curso de JavaScript Desde Cero

Contenido del curso

Primeros Pasos

Funciones y This

Resumen

¿Qué es el identificador this o contexto de ejecución?

El identificador this es un concepto fundamental en JavaScript, que permite a las funciones saber a qué objeto pertenecen gracias al "contexto de ejecución". Imagina que tienes un perro (función) en una casa (objeto) con un letrero que indica el nombre del perro o el dueño de la casa. Si el perro está dentro de la casa, ya sabe a qué casa pertenece gracias a ese letrero. De forma similar, las funciones en JavaScript pueden saber a qué objeto pertenecen gracias a this.

Es importante tener en cuenta que si la función se ejecuta fuera de su objeto, el contexto this podría ser indefinido. Vamos a explorar en código este concepto en detalle.

¿Cómo enlazamos funciones y objetos con this?

Cuando las funciones pertenecen a un objeto, pueden acceder a las propiedades del objeto utilizando this. Veamos un ejemplo práctico:

const house = { dogName: 'Fido', dogGreeting: function() { console.log(`Hi, I'm ${this.dogName}`); } }; house.dogGreeting(); // Salida: Hi, I'm Fido

Aquí, house es un objeto que tiene una propiedad dogName y una función dogGreeting. La función usa this.dogName para acceder a la propiedad dogName del objeto house, mostrando el saludo correcto.

Enlace implícito (Implicit Binding)

El uso de this como en el ejemplo anterior se conoce como "enlace implícito" o "implicit binding". Esto sucede cuando this se refiere automáticamente al objeto al que la función pertenece.

house.dogGreeting(); // Utiliza el enlace implícito

Enlace explícito (Explicit Binding)

El enlace explícito permite forzar el contexto de this a un nuevo objeto. Utilizamos métodos como call para cambiar el contexto de this:

function dogGreeting() { console.log(`Hi, I'm ${this.dogName}`); } const newHouse = { dogName: 'Coconut' }; dogGreeting.call(newHouse); // Salida: Hi, I'm Coconut

Aquí, call se usa para vincular explícitamente this a newHouse, de modo que la función dogGreeting se ejecute en el contexto de newHouse.

¿Cómo manejamos parámetros adicionales en funciones vinculadas?

Podemos pasar argumentos adicionales a las funciones, manteniendo el contexto correcto. En este ejemplo, se agregan parámetros a la función para personalizar más el saludo:

function newDogGreeting(owner, address) { console.log(`Hola, soy ${this.dogName} y vivo con ${owner} en ${address}.`); } const anotherHouse = { dogName: 'Coconut' }; newDogGreeting.call(anotherHouse, 'Lucy', 'Avenue 123');

Consideraciones finales

  • Enlace Implícito: Función dentro de un objeto accediendo a sus propiedades.
  • Enlace Explícito: Uso de call para vincular funciones a nuevos objetos.
  • Paso de Parámetros: Se pueden manejar parámetros adicionales en las funciones usando el contexto correcto.

Al comprender el contexto de ejecución y cómo manipular this, puedes escribir código más flexible y reutilizable. Continúa practicando y aplicando estos conceptos fundamentales para dominar el lenguaje JavaScript.