Javascript将字符串转换为函数名

Javascript convert string into function name

本文关键字:函数 转换 字符串 Javascript      更新时间:2024-05-05

可能重复:
使用字符串调用JavaScript函数名
变量的javascript字符串

我有这个代码:

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"(字符串)作为函数名?

在全局命名空间中,您可以执行以下操作:

this.test = function() {
    alert('test');
}
window['test']();

然而,更好的选择是使函数成为您创建的对象的方法,而不是全局window对象的方法。

我不知道你为什么要这么做,如果函数是全局范围的一部分,你可以使用括号表示法。

window["stringName"]();

使用eval()被认为是"邪恶的",尤其是在Danila给出的例子中——任何一段JS都可以在eval(。正如epascarello所说,最好的选择是使用方括号表示法来调用命名函数。然而,需要注意的是,windowt将调用全局命名空间中的函数——如果该函数是对象的方法,则应该引用它。

使用eval()函数

示例:

a = "alert(1)"
eval(a)