<script>
//in one script
var someVarName_10 = 20;
</script>
Ich möchte von einem anderen Skript über den Namen der Variablen auf diese Variable zugreifen können. Mit Fensterobjekt ist es einfach, ist es mit lokaler Variable möglich?
Ich meine, greifen Sie mit folgendem Code auf diese Variable zu:
<script>
alert(all_vars['someVar' + 'Name' + num]);
</script>
javascript
Appqui-Plattform
quelle
quelle
Antworten:
Möchtest du so etwas machen?
<script> //in one script var someVarName_10 = 20; alert(window["someVarName_10"]); //alert 20 </script>
Update : weil OP die Frage bearbeitet hat.
<script> num=10; alert(window['someVar' + 'Name_' + num]); //alert 20 </script>
quelle
var a = {name: "ABC"}
. Hierwindow["a.name"]
wird nicht funktionieren. Problemumgehungen?Ich habe festgestellt, dass jeder die Erstellung globaler Variablen empfiehlt. Dies führt dazu, dass Variablen in den globalen Namespace gelangen. Wenn Sie dynamisch Klassennamen oder nur Variablen erstellen, ist es einfach, sie lokal zu halten:
this['className'] = 123;
oder
this['varName'] = 123;
Der Namensabstand würde folgendermaßen aussehen:
vars = {}; vars['varName'] = 123; vars.varName // 123
quelle
var this['className'] = 123;
sieht für mich wie ein Syntaxfehler aus.<script> var someVarName_10 = 20; var num = 10; alert(eval('someVar' + 'Name_' + num)); //alert 20 </script>
quelle
eval
hat besser für mich funktioniert! aber verwenden Sie es mit VorsichtNun, nur zum Debuggen könnten Sie so etwas tun. Ich benutze es während der Entwicklung von Klassen, bei denen einige Variablen privat bleiben müssen (var). Dies funktioniert auch in lokalen Variablen (und global von Fluch)
function MYCLASS(){ var a=1, b=2, c=3; this.public = "variable"; this.debug = function(sVar){ return eval(sVar); } } var myThing = new MYCLASS(); myThing.debug('a') //return 1 myThing.debug('b') //return 2 myThing.debug('c') //return 3
quelle
Dies ist nicht meine eigene Antwort, die Antwort von Arthur Araújo , aber ich denke, dass sie hier relevant ist.
Eval Alternative:
exp = '1 + 1' x = Function('return ' + exp)() console.log(x)
quelle
Wenn Sie das gesagt haben:
<script type="text/javascript"> var hello = 'test'; </script> <script type="text/javascript"> alert (hello); </script>
Es funktioniert, weil das Skript endlich für das Dokument verfügbar ist und Sie auf deren Variablen zugreifen können.
quelle