What the Hell is “This”?

Después de escribir sobre el ámbito, me quedó en la mente la pregunta ¿por qué no hablaste del bendito “this”, que trae a todos los programadores que comienzan (y algunos que ya llevan tiempo) por el valle de la amargura? Así que, como no quería editar el post, preferí hacer uno nuevo.
Comencemos por el Principio:

¿Qué es “this”?

Pues simple, “this” es una palabra reservada en la mayoría de lenguajes de programación que tiene la particularidad de significar cosas diferentes según donde se encuentre. Es conocida también como una propiedad contextual.
¿Cómo es eso? La mejor forma que he encontrado para explicarlo es traduciéndolo al castellano. “This” significa “esto”.
Entonces, la particularidad de “esto” (que, si recuerdan un poco sus clases de castellano -cosa que seguro no pasará- es lo que se conoce como un adjetivo indicativo o determinativo (uhhhh, muy técnico o_Ô)).
En un sentido más llano, la palabra “esto” se refiere siempre a algo que está cerca, pero puede cambiar según el contexto.
Si estoy en esta habitación y digo “esto”, está claro a lo que me refiero (esta habitación), pero si salgo de ella y digo “esto” estoy hablando de algo completamente diferente… Es decir que lo que significa la palabra esto cambia dependiendo de donde me encuentre.
Exactamente lo mismo es lo que ocurre con this; su significado varía, dependiendo a donde se escriba.
Si estoy dentro de una clase, la referencia de this será esa clase, si estoy en un movieclip, en Flash, this se refiere a ese movieclip.
Es precisamente esta versatilidad de this la que causa grandes dolores de cabeza a muchos programadores, sobre todo cuando estamos comenzando, nos hallamos un poco perdidos cuando encontramos clases llenas de ella por todas partes y no entendemos de qué va.
Pues, la forma de resolver esa duda se basa en comprender el contexto donde la propiedad aparece (si es una clase, una instancia, una función…). Una vez que se comprende el contexto, se entiende fácilmente de qué se trata. Algo así como “para entender esto tienes que mirar alrededor”.
Así que, no tengan miedo de usarla. Bien usada es una poderosa herramienta que puede sacarlos de problemas y regalarles a cambio un código más limpio y más efectivo.

, ,


5 thoughts on “What the Hell is “This”?

  1. @Aoyama: ¬¬ You fail at courses U_U
    @Jaleru: Ciertamente no se ve el beneficio a la primera, pero una de las ventajas de “this” es que te da la flexibilidad de referirte a diferentes elementos, según el contexto, sin cambiar el código. En cualquier caso, como temía que alguien preguntara eso ¬¬, voy a hacer un update con el ejemplo que debía acompañar este artículo, mostrando uno de los posibles usos de this.
    También hay que decir que tienes razón. De hecho, el uso de “this” no es un sustituto de la declaración directa de propiedades o métodos, pero puede ser útil en algunos casos, sobre todo es sumamente útil cuando escribes clases.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s