¿Qué es la palabra clave «Esta» en JavaScript?

Funciones, objetos y this todas las palabras clave están interconectadas en JavaScript. Cuando se llama a una función, this variable se establece en un objeto específico. Sin embargo, el valor de this solo depende cómo la función fue llamada.

En esta publicación, exploraremos diferentes formas en que podemos llamar funciones, así como también cómo cada una de ellas establece el valor de this un poco diferente

Contenido

“Esto” en funciones constructoras.

Un lugar donde comúnmente verá el this La palabra clave está dentro de las funciones del constructor. Considere el siguiente ejemplo:

function Course(id, name) {
 this.id = id;
 this.name = name;
 
 this.describe = function () {
   console.log(`Course ${this.id}: ${this.name}`);
 };
}
 
const spanish = new Course("SPA-001", "Spanish 1");

en lo anterior Course() constructor describe referencias de métodos this.id y this.name. Ya que invocamos el Course() función con el nuevo operador, this se establece en el objeto recién creado: spanish.

{
 id: "SPA-001",
 name: "Spanish 1",
 describe: function () {
   console.log(`Course ${this.id}: ${this.name}`);
 }
}

Como resultado, desde this se convierte en el spanish objeto, y podemos acceder a las propiedades directamente desde ese objeto:

console.log(spanish.id); // "SPA-001"
console.log(spanish.name); // "Spanish 1"

Es más: el describe() El método puede usar efectivamente this para acceder a la id y name propiedades de ese objeto. Esto hace posible la siguiente llamada al método:

console.log(spanish.describe()); // "Course SPA-001: Spanish 1"

Para recapitular: cuando invocamos una función constructora con el operador new, el valor de this se establece en ese objeto recién creado (es decir, instanciado).

“Esto” en métodos.

Otro lugar donde comúnmente verás this está dentro de los métodos de objeto. En este contexto, el valor de this en realidad no está asignado a nada hasta que un objeto llama al método donde this se usa En otras palabras, el valor asignado a this se basa en el objeto que invoca el método donde this se define.

Considere el siguiente ejemplo:

const printer = {
 print: function () {
   console.log("Printing...");
 },
 printTwice: function () {
   this.print();
   this.print();
 },
};

Si invocamos la printer métodos del objeto:

printer.print();
// "Printing..."
 
printer.printTwice();
// "Printing..."
// "Printing..."

Sabemos que cuando llamamos printer.print() (oro printer.printTwice()) una variable this se establece Ya que this puede acceder al objeto al que fue llamado (es decir, printer), printTwice puedo usar this a acceso directoprinter objeto que contiene el print método. En otras palabras: this.print() dice printTwice para mirar printer – el objeto sobre el que se invocó el método – para encontrar print.

Como tal, al invocar un método en un objeto, this se establece en el objeto en sí!

“Esto” en funciones.

Hasta ahora, hemos visto lo que sucede con this al invocar una función constructora con el operador new, así como lo que sucede con this al llamar a una función que pertenece a un objeto (es decir, un método). ¿Qué sucede cuando simplemente invocamos una función regular por sí sola?

Considere la siguiente función que simplemente devuelve this:

function funFunction() {
 return this;
}

cuando invocamos funFunction(), this establecido en el objeto de la ventana, que es el objeto global si el entorno host es el navegador.

funFunction(); // (returns the global object, window)

Para verificar las propiedades y los métodos disponibles en el objeto devuelto, intente ejecutar el código anterior en la consola de desarrollador de su navegador (por ejemplo, Chrome DevTools).

Palabra clave “Esta”, recapturada.

Cuando se llama a una función, una variable this se establece en un valor determinado. pero dependiendo de cómo la funcion se llama como this se refiere puede ser muy diferente:

  • Si se llama a una función constructora con un nuevo operador, this se establece en el objeto recién creado
  • Si se llama a un método en un objeto, this se establece en ese objeto particular en sí mismo
  • Si simplemente se invoca una función normal, this se establece en el objeto de ventana (o global)

Aprende más.

Además de todo esto, existen aún más formas de invocar funciones: con apply() y con call(). Ambos métodos comparten bastantes similitudes, y cada uno nos permite especificar cómo queremos configurar this.

Para una mirada más cercana a esos métodos, así como una visión general ampliada de los this palabra clave en JavaScript, consulte estos recursos:

O explore el programa Intermediate JavaScript Nanodegree para dominar el lenguaje de programación más popular del mundo.

COMIENZA A APRENDER

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *