Qué es this
En muchos lenguajes orientados a objetos, this es una palabra que puede ser usada para hacer referencia al objeto en el cual la ejecución actual ha sido invocada.
this en jQuery
Existen en realidad dos conceptos de ‘this’ en jQuery. El primero que hace referencia a un elemento en el DOM y el segundo que hace referencia a un objeto de jQuery.
En el DOM
‘this’ es un elemento del DOM cuando se esta dentro de una función de devolución, por ejemplo, cuando ha sido llamada por click, each, bind, etc.
1 2 3 4 5 6 7 |
$('a.newTarget').each(function() { // <- funcion anónima // revisar el atributo en DOM 'host' en 'this' if (this.host != window.location.host) { // crear un objeto de jQuery $(this).attr('target', '_new'); } }); |
Objeto de jQuery
‘this’ es un objeto de jQuery cuando se esta dentro de tu propia función de jQuery.
1 2 3 4 5 6 7 8 9 10 11 12 |
jQuery.fn.newTarget = function() { // 'this' es un objeto de jQuery en este punto return this.each(function() { // con return para no romper la cadena de ejecución // ahora estamos dentro de una función jQuery, de modo que el contexto ahora es el DOM // 'this' ha cambiado a ser un elemento del DOM if (this.host != window.location.host) { $(this).attr('target', '_new'); } }); }; |
La regla para no confundirse
Mientras recuerdes que ‘this’ cambian cuando the mueves entre los métodos, entonces vas bien.
¿Te gustó este artículo?
Si te gustó este artículo, te ha servido o aprendiste algo nuevo; compártelo en tus redes sociales o invítame un cafe.
David Bonilla liked this on Facebook.
this no es de jquery es de javascript, “corrección”
jajaja lo que son las cosas, justamente me estaba preguntado sobre este tema hoy en el trabajo
Mishell Sossa liked this on Facebook.
Ricardo Rivas liked this on Facebook.
En realidad “this” en javascript es tomado en cuenta en el momento de ejecución y no al momento de la declaración. Les comparto un ejemplo con coffeeScript y el “fat arrow” =>
https://gist.github.com/richistron/6301880
Muchas gracias Richis por el ejemplo y la aclaración