可能重复:
Call a JavaScript function name using a string?
javascript string to variable
我有这段代码:
var Functionify = function() {
return {
init: function(el, t) {
var els = document.getElementsByClassName(el);
var elsL = els.length;
while(elsL--){
//els[elsL].onclick = els[elsL].getAttribute(t);
els[elsL].addEventListener('click', els[elsL].getAttribute(t), false);
}
}
};
}();
el = 'myClassName'
和t = 'data-id'
现在,'t'是一个字符串,如何告诉addEventListener函数使用't'(字符串)作为函数名?
答案 0 :(得分:7)
在全局命名空间中,您可以执行以下操作:
this.test = function() {
alert('test');
}
window['test']();
然而,更好的选择是使您的函数成为您创建的对象的方法,而不是全局window
对象的方法。
答案 1 :(得分:1)
我不确定你为什么要这样做,如果函数是全局范围的一部分你可以使用括号表示法。
window["stringName"]();
答案 2 :(得分:1)
使用eval()被认为是“邪恶的”,特别是在Danila给出的例子中 - 任何一块JS都将/可以在eval()中执行。 epascarello所述的最佳选择是使用方括号表示法来调用命名函数。然而,应该注意,windowt将调用全局命名空间中的函数 - 如果函数是对象的方法,则应该如此引用它。
答案 3 :(得分:0)
使用eval()函数
示例:
a = "alert(1)"
eval(a)