在Javascript中执行一个动态命名的函数

可能重复:
当我将其名称作为字符串时如何执行JavaScript函数

挣扎着这个,我似乎无法找到一个好的资源。

背景:我正在创建一个步骤系统,并且将属性data-step="1"的方向/顺序传递给了我。 这将控制将显示的ID(该部分很容易),还需要调用以获取正确信息的函数。

问题基本上是 ,我怎样才能调用我需要动态构建的名称的函数?

IE: step1(); step2(); step1(); step2(); 除了我想在那里动态地添加那个数字。

// In an essense, what I'm trying to achieve:
// It's always called step and then followed by a number

[step + directionNumber](); // which isn't working

也试图避免使用eval因为我们都知道它是邪恶的:)


使用

window["step" + directionNumber](); 

当你在全球范围内写作时

function someName(){
}

您正在使用名称someName定义全局对象( window )的someName并为该函数赋值。

这相当于

window.someName = function(){
}

所以你可以调用你的函数window.someName(); 或者,在这里更有用,就像window['someName']();

更好的解决方案可能是定义一个函数数组:

var stepFunctions = [];
stepFunctions[0] = function(){};

那么你可以使用stepFunctions[directionNumber]();来调用它们stepFunctions[directionNumber]();


将你的函数存储在一个对象中,以便按名称动态访问它们。

var funcs = {};

funcs.step1 = function(){ console.log("foo"); };
funcs.step2 = function(){ console.log("bar"); };

var text = "step",
    number = 1;

funcs[text + number](); // foo

++number;

funcs[text + number](); // bar
链接地址: http://www.djcxy.com/p/94835.html

上一篇: Executing a dynamically named function in Javascript

下一篇: How to call a function whose name is defined in a string?