Jscript:可以动态设置变量吗?

时间:2013-03-02 07:39:17

标签: javascript jscript wsh

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 ,但未能使其正常工作。有什么想法吗?

谢谢, 浣熊

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

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

var VarHolder = {};

VarHolder[VarName] = VarValue;

答案 2 :(得分:1)

如果我的问题正确,那么this topic可能会有所帮助。

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