5

Possible Duplicate:
Call a JavaScript function name using a string?
javascript string to variable

I have this code:

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);
            }
        }

    };

}();

Where el = 'myClassName' and t = 'data-id'

Now, 't' is a string, how can tell the addEventListener function to use 't' (a string) as a function name?

4

4 回答 4

7

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

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

window['test']();

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

于 2012-07-30T23:48:06.467 回答
1

使用 eval() 被认为是“邪恶的”,尤其是在 Danila 给出的示例中——任何 JS 片段都将/可以在 eval() 中执行。epascarello 所述的最佳选择是使用方括号表示法来调用命名函数。但是,应该注意的是,windowt 将调用全局命名空间中的函数——如果该函数是对象的方法,则应照此引用它。

于 2012-07-30T23:50:15.960 回答
1

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

window["stringName"]();
于 2012-07-30T23:44:02.647 回答
0

Use eval() function

Example:

a = "alert(1)"

eval(a)
于 2012-07-30T23:43:01.763 回答