Siguiendo el rollo del post anterior, en el que queríamos ejecutar un callback de un evento en el ámbito de una clase concreta, pues otra manera mucho más cómoda de hacerlo para un desarrollador ActionScript sería con una clase Delegate para JavaScript.
La adaptación sería esta:
PLAIN TEXT
JavaScript:
-
/* Delegate.create
-
* Ejecuta una función en el contexto del objeto original
-
* @param obj(Object) el objeto dónde ejecutar la función [func]
-
* @param func(Function) referencia a la función a ejecutar
-
* @param params(Array) array de parámetros que enviamos a func
-
*/
-
Delegate = {
-
create: function (obj, func, params)
-
{
-
var f = function()
-
{
-
return func.apply(obj, params);
-
};
-
return f;
-
}
-
}
Y un ejemplo:
PLAIN TEXT
JavaScript:
-
Delegate = {
-
create: function (obj, func, params)
-
{
-
var f = function()
-
{
-
return func.apply(obj, params);
-
};
-
return f;
-
}
-
}
-
-
function clazz()
-
{
-
this.msg = "¡Estoy en clazz!";
-
this.f();
-
}
-
clazz.prototype.f = function ()
-
{
-
var img = new Image();
-
img.onload = Delegate.create(this, this.callback, ["param1", "param2"]);
-
img.src = "on.gif";
-
}
-
clazz.prototype.callback = function(p1, p2)
-
{
-
alert( this.msg );
-
alert( p1 );
-
alert( p2 );
-
}
-
var c = new clazz();