在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?