Jscript:是否可以动态设置变量?

Jscript: is it possible to set the variable dynamically?

本文关键字:设置 变量 动态 是否 Jscript      更新时间:2023-09-26

config.txt中,我有以下字符串:

Dispatcher=argo
Address=10.5.23.14
User=joe

在我的script.js中,我有以下变量:

var Dispatcher, Address, User;

在script.js中,我读取config.txt,解析字符串并获得名称/值对:

ConfigPair = ConfigString.split("=");
VarName = ConfigPair[0];
VarValue = ConfigPair[1];

我想要的是将VarValue分配给VarName变量。例如,如果我在VarName中得到"Address",在VarValue中得到"10.5.23.14",我想将Address变量设置为10.5.23.14。

不希望做这样的事情:

if (VarName == "Dispatcher") {
    Dispatcher = VarValue;
} else if (VarName == "Address") {
    Address = VarValue;
} else if bla-bla-bla

我想以某种方式"读取"VarName的值并将VarValue分配给相应的变量。是否有可能在Windows脚本主机(JScript)?我玩了eval,但未能使其工作。什么好主意吗?

谢谢,浣熊

如果您在浏览器中工作,您可以像这样使用全局window对象:

// VarName = "User"
// VarValue = "joe"
window[VarName] = VarValue;
alert(User); // prints "joe"
User = 'jack';
alert(User); // prints "jack"

编辑

WSH和Windows 7测试:

(function () {
    var VarName = 'User'; // ConfigPair[0]
    var VarValue = 'joe'; // ConfigPair[1]
    this[VarName] = VarValue;
})();
WSH.Echo(User); // prints "joe"
WSH.Quit();

你可以创建一个对象并动态地分配属性,

var VarHolder = {};
VarHolder[VarName] = VarValue;

如果我的问题是正确的,那么这个话题可能会有所帮助。

(function() { eval.apply(this, arguments); }("x=1;y=2"));
WScript.Echo("x=" + x, "y=" + y); // x=1 y=2