Identificador this

Otro concepto comunmente muy incomprendido en JavaScript es el identificador this. De nuevo, hay un par de capitulos en titulo this & object Prototypes, asi que aqui tan solo vamos a introducir el concepto.

Aunque a menudo pueda parecer que this esta relacionado a "patrones orientados a objetos" en JS this tiene un mecanismo diferente.

Si una funcion tiene una referencia a this dentro de ella, esa referencia de this por lo general apunta a un objeto. Pero a que objeto apunta depende de como la funcion a sido llamada.

Es importante aclarar que this no se refiere a la misma funcion, como erroneamente se cree.

Aqui un rapida ilustracion:

function foo() {
    console.log( this.bar );
}

var bar = "global";

var obj1 = {
    bar: "obj1",
    foo: foo
};

var obj2 = {
    bar: "obj2"
};

// --------

foo();                // "global"
obj1.foo();            // "obj1"
foo.call( obj2 );    // "obj2"
new foo();            // undefined

Hay cuatro reglas de como this es establecido, y estan representados en las ultimas cuatro lineas del codigo anterior.

  1. foo() termina definiendo this a el objeto global en modo non-strict -- en modo estricto, this seria undefined y se obtendria un error al acceder a la propiedad bar -- asi que "global" es el valor encontrado por this.bar
  2. obj1.foo() define this al objeto obj1
  3. foo.call(obj2) define this al objeto obj2
  4. new foo() define this a un nuevo objeto vacio.

Conclusion final: para entender a que esta apuntando this, tendra que examinar como la funcion en question es llamada, Sera una de las cuatro maneras que acabamos de mostrar, y que luego respondera que es this

results matching ""

    No results matching ""