3

我正在尝试实现以下伪代码:

function processAboutLink(){

}

function processServicesLink(){

}

var variableName = 'about';

process + variableName + Link();

var variableName = 'services';

process + variableName + Link();

我知道上面的代码不是真实的,而是一个逻辑表示。谁能指出我正确的方向?

4

4 回答 4

8

拥有一个对象会更方便,因为您可以动态访问属性:

var processLinkFunctions = {
  about:    function() { ... },
  services: function() { ... }
};

然后,它很简单:

processLinkFunctions[variableName]();

processLinkFunctions.about()这与if基本相同variableName === "about"

于 2012-04-27T12:10:00.490 回答
4

您可能想改用对象文字进行命名空间

var process = {
    services: function(){...},
    about: function(){...}
}

然后打电话给他们:

process[variable]();
于 2012-04-27T12:10:26.213 回答
1

如果您为对象创建函数属性,则可以按名称调用它们(并且无需求助于eval!):

var functions = {
    about: function() { ... },
    services: function() { ... }
};

var name = 'about';
functions[name]();
于 2012-04-27T12:10:50.267 回答
-1

编辑不要使用评估。这似乎很危险,并导致未定义的行为。

错误的答案:

eval('process' + variableName + 'Link()');

应该管用

于 2012-04-27T12:10:06.010 回答