Comunidad de diseño web y desarrollo en internet

Uso de variables globales con _global en Actionscript

La vez pasada en un tip de Elecash hice la pregunta pero nadie me respondió, "es que no te quieren" me gritaron por ahí, lo sé... :(

Primero, debo decirles que NO USEN "_global". No les conviene mucho utilizarlo ya que pueden terminar con un código spaghetti y no es muy OOP que digamos. Si quieren algún repositorio global de su aplicación creen un Singleton de su app y ahí generen un modelLocator donde guardar todo eso que necesitan en todos lados.

Lo que hace _global de hecho es algo parecido a un Object.prototype. Siendo en AS1 y AS2 (y en otros lenguajes que sigan un ECMA parecido también) la clase Object la clase del último nivel (clase padre de todas las clases). Si algo seteamos en su prototype esto será heredado a todos sus hijos cual cascada de agua y pues, siendo Object padre de todo, lo que conseguimos es generar elementos globales para toda la aplicación.

Por ejemplo:

Código :

function MiClase(){
}
MiClase.prototype.clab = "Cristalab";

trace ((new MiClase()).clab); //devuelve "Cristalab"


Si en caso mi clase "MiClase" no tuviera la propiedad "clab" lo que haría sería buscar en su padre (en este caso Object directamente)

Código :

function MiClase(){
}

trace ((new MiClase()).clab); // devuelve undefined porque ni la clase ni el Object tienen la propiedad
Object.prototype.clab = "Cristalab!!";
trace ((new MiClase()).clab); // devuelve "Cristalab!!", hereda de Object

// Probemos algo más cool:
trace (this.clab); // Devuelve "Cristalab!!", hereda de Object

trace ((new Sound()).clab); // Devuelve "Cristalab!!", hereda de Object


Entonces podriamos hacer en AS1 para imitar a _global:

Código :

Object.prototype._global = Object.prototype;

_global.cristalab = "c-lab";

trace (this.cristalab); // "c-lab"


Eso es todo, espero les sirva para entender que no deben de hacer jeje

Hace ya mucho que no utilizo AS2 o AS1 así que plz revisen mi code que no lo he ni probado. Thanks!

-- fernando

http://twitter.com/fernandoflorez

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate