Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/11/2014, 19:08
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Mejor metodología para usar this cuando es innaccesible?

Hola,

Tengo una consulta para averiguar si no me estoy equivocando o haciendo una mala práctica del lenguaje. Normalmente tengo que hacer referencia al objeto en el que estoy definiendo algunas o muchas funciones anónimas, pero en estas no tengo acceso a la palabra reservada this, lo cual me crea una estructura del lenguaje bastante compleja y creo (posiblemente) innecesaria.

Como no he visto muchas aplicaciones que lo hagan de la forma como yo lo realizo me pregunto si hay algo que estoy realizando mal, por ejemplo:

Código Javascript:
Ver original
  1. Mesa.prototype.crearTablero = function (ancho, alto, callback) {
  2.     this.tablero = new Tablero(ancho, alto, (function (mesa) {
  3.         return function () {
  4.             mesa.panel = document.getElementById("JPuzzleT");
  5.             if (mesa.panel) {
  6.                 mesa.panel.onclick = (function (mesa) {
  7.                     return function (evt) {
  8.                         mesa.mouseClickedHandler(evt);
  9.                     };
  10.                 })(mesa);
  11.                 callback();
  12.             }
  13.         };
  14.     })(this), (function (mesa) {
  15.         return function (origen, destino) {
  16.             mesa.stateChangedHandler(origen, destino);
  17.         };
  18.     })(this));
  19. };

En ese caso no me queda mas que crear una función anónima adicional que reciba un parámetro, donde le paso el this (en este caso mesa), para que el closure tenga acceso al this. El ejemplo es de una aplicación algo antigua adaptada de una aplicación que hice en Java, pero todavía se aplica.

Ahora bien, el problema es que ese fue un ejemplo sencillo a veces tengo que declarar muchas funciones que internamente definen muchas funciones y al final en cascada tengo n cantidad de funciones anónimas solamente con el objetivo de tener acceso al this.

¿Existe algún mejor método o patrón que no tenga que estar pasando el this de esa forma?

Saludos,