Saltar al contenido

Usar nombres de variables dinámicas en JavaScript

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 foobara 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *