Esta sección fue aprobado por nuestros expertos para garantizar la veracidad de nuestro tutorial.
Solución:
Dado que ECMA-/Javascript se trata de Objects
y Contexts
(que, también son una especie de Objeto), cada variable se almacena en un llamado Variable- (o en el caso de una Función, Objeto de activación).
Entonces, si creas variables como esta:
var a = 1,
b = 2,
c = 3;
En el Alcance global (= SIN contexto de función), implícitamente escribe esas variables en el Objeto global (= window
en un navegador).
Se puede acceder a ellos usando la notación “punto” o “paréntesis”:
var name = window.a;
o
var name = window['a'];
Esto solo funciona para el objeto global en esta instancia particular, porque el objeto variable del Objeto global es el window
objeto mismo. Dentro del Contexto de una función, no tiene acceso directo al Objeto de activación. Por ejemplo:
function foobar()
this.a = 1;
this.b = 2;
var name = window['a']; // === undefined
alert(name);
name = this['a']; // === 1
alert(name);
new foobar();
new
crea una nueva instancia de un objeto autodefinido (contexto). Sin que new
el alcance de la función sería también global
(=ventana). Este ejemplo alertaría undefined
y 1
respectivamente. Si reemplazáramos this.a = 1; this.b = 2
con:
var a = 1,
b = 2;
Ambas salidas de alerta estarían indefinidas. En ese escenario, las variables a
y b
se almacenaría en el objeto de activación de foobar
a los que no podemos acceder (por supuesto, podríamos acceder a ellos directamente llamando a
y b
).
eval
es una opción
var a = 1;
var name = 'a';
document.write(eval(name)); // 1
Puede usar el objeto de la ventana para llegar a él.
window['myVar']
window
tiene una referencia a todas las variables globales y funciones globales que está utilizando.
Tienes la opción de añadir valor a nuestra información dando tu experiencia en las anotaciones.