2.6 Identificador This
Otro concepto muy comúnmente mal entendido en JavaScript es el identificador this. Una vez más, hay un par de capítulos sobre él de esta serie, así que aquí vamos a introducir brevemente el concepto.
Aunque a menudo parece que this está relacionado con "patrones orientados a objetos", en JS este es un mecanismo diferente.
Si una función tiene una referencia this dentro de ella, esa referencia this normalmente apunta a un object. Pero el object al que apunta depende de cómo se llamó la función.
Es importante darse cuenta de que this no se refiere a la función en sí, y ése es el error más común.
He aquí una ilustración rápida:
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(); // undefinedHay cuatro reglas para cómo se establece this, y se muestran en las cuatro últimas líneas de ese fragmento.
foo()termina configurandothispara el objeto global en modo no estricto - en modo estricto, esto seríaundefinedy obtendría un error en el acceso a la propiedadbar- por lo que "global" es el valor encontrado para este.bar.obj1.foo()establecethisen el objectobj1.foo.call(obj2)establecethisen el objetoobj2.new foo()establecethisen un nuevo objeto vacío.
En pocas palabras: para entender a qué se refiere this, hay que examinar cómo se llamó la función en cuestión. Será una de esas cuatro maneras que acabamos de mostrar, y eso responderá a lo que es this.
Nota: Para obtener más información al respecto, consulte los capítulos 1 y 2 del título This y Objetos Prototipos de esta serie.
Last updated
Was this helpful?