0

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,但没能成功。有任何想法吗?

谢谢,浣熊

4

3 回答 3

2

如果您在浏览器中工作,则可以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();
于 2013-03-02T09:15:25.620 回答
1

您可以创建对象并动态分配属性,

var VarHolder = {};

VarHolder[VarName] = VarValue;
于 2013-03-02T07:44:25.273 回答
1

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

(function() { eval.apply(this, arguments); }("x=1;y=2"));
WScript.Echo("x=" + x, "y=" + y); // x=1 y=2
于 2013-03-02T16:09:32.750 回答