Javascript将字符串转换为函数名称

时间:2012-07-30 23:39:24

标签: javascript

  

可能重复:
  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'(字符串)作为函数名?

4 个答案:

答案 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)