funciona - Cómo encontrar JavaScript variable por su nombre
javascript pdf (7)
Podría usar eval ()
¿Hay alguna manera de encontrar la variable de JavaScript en la página (obténgalo como un objeto) por su nombre? El nombre de la variable está disponible como una constante de cadena.
Si desea una variable que se declara en el contexto global, se adjunta al objeto ventana. ex: window ["variableName"]. Todas las variables son un valor de tabla hash dentro de su alcance.
Si tiene que usar notación punteada, querrá seguir la sugerencia de Kennebec para navegar por la jerarquía de objetos. eval () también puede funcionar, pero es una operación más costosa de lo que probablemente se necesite.
Si se trata de una variable global, puede buscarla por su nombre en el objeto global, ya que las variables globales son propiedades del objeto global. En los navegadores, hay una variable global que hace referencia al objeto global denominado window
, por lo que:
var name = "foo";
window.foo = 42;
alert(Number(window[name])); // 42
Pero las variables globales son una mala cosa (tm) .
Para hacer esto sin globales, use su propio objeto:
var name = "foo";
var obj = {};
obj.foo = 42;
alert(Number(obj[name])); // 42
Los dos anteriores funcionan porque en JavaScript puede referirse a una propiedad del objeto con notación de puntos y un literal ( obj.foo
), o con una notación entre corchetes y una cadena ( obj["foo"]
), y en este último caso , la cadena puede ser el resultado de cualquier expresión, incluida una búsqueda variable.
Si su cadena hace referencia a una propiedad ''profunda'' de un global, como ''Yankee.console.format'' puede pasar por las referencias:
String.prototype.deref= function(){
// remove leading and trailing quotes and spaces
var obj= this.replace(/(^['' "]+|[" '']+$)/g,'''');
var M= obj.match(/(^[/w/$]+(/.[/w/$]+)*)/);
if(M){
M= M[1].split(''.'');
obj= window[M.shift()];
while(obj && M.length) obj= obj[M.shift()];
}
return obj || this;
}
Todos los objetos JS (qué variables son) están disponibles dentro de su alcance como propiedades nombradas de su objeto principal. Donde no existe un padre explícito, es implícitamente el objeto window
.
es decir:
var x = ''abc'';
alert(window[''x'']); //displays ''abc''
y para un objeto complejo:
var x = {y:''abc''};
alert(x[''y'']); //displays ''abc''
y esto puede ser encadenado:
var x = {y:''abc''};
alert(window[''x''][''y'']); //displays ''abc''
<script>
var a ="test";
alert(a);
alert(window["a"]);
alert(eval("a"));
</script>
var getVar = function (obj) {
for(var key in this) {
if(obj === this[key]) return key;
}
};
foo = ''foo'';
console.log( getVar(foo) ); // => ''foo''
https://.com/a/17432007/1250044