Ver Mensaje Individual
  #15 (permalink)  
Antiguo 08/08/2011, 12:36
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: duda al ordenar código javascript

repuesta corta: si y no. obviamente requiere una explicación. en cierta medida no es posible porque javascript no provee al autor de alguna sentencia o mecanismo para referirse a un scope en particular. si bien recuerdo, por ejemplo en actionscript (lenguaje que utiliza flash) se define un token _parent aparentemente para hacer referencia al scope padre donde se invoque. (nota: que alguien me corrija si este no es el propósito.) en los lenguajes basado en clases (no se si en todos) se define un token similar para hacer referencia a una clase que hereda. en cambio, en javascript no existe nada de estos conceptos.

en cierta medida es posible siempre y cuando el objeto que quieras hacer referencia sea visible o alcanzable para el autor. para hacer referencia a un objeto que tiene el mismo token pero definido en otro contexto, tendrías que indicar el camino hacia este. en javascript, la visibilidad esta particularmente limitada por los scope de las funciones. por ejemplo, si tienes una variable definida en una función, no es posible hacer referencia a ella a no ser que este en el mismo scope.
Código:
function foo(){
var bar = 'candy';
function baz(){
// baz puede acceder a bar porque esta en el orden de scope;
return bar;
}
}
// fuera del scope de foo no se puede acceder a bar porque la variable es local y es solo visible dentro del scope de foo;

// referencia a un objeto particular mientras sea visible;
function bar(){return 'bar definido en contexto global';}
function foo(){
function bar(){return 'bar definido en contexto de foo';}
return self.bar(); // invocando bar del contexto global;
// notese que primero se debe indicar donde esta definido el objeto, en este caso self indica el contexto global (lo mismo que window);
}
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.