繁体   English   中英

JavaScript调用名称为匿名作用域中的函数的字符串形式的函数

[英]JavaScript call a function who's name is a in string for a function in a anonymous scope

这在javascript中可行吗? 我试着调用名为“name”的变量的函数(对不起!)。 该功能不在全球范围内。

(function () {
    var myFunc, name;

    myFunc = function(){
        alert("Hi!");
    };
    name = "myFunc";
    //myFunc();  // work

    (name)();   // do not work
    this[name]();   // do not work

})();

注意:我在这里有一个jsfiddle条目

“本地范围”没有对象,就像全局范围一样。 您可以(并且应该)创建自己的对象来保存您的功能:

(function () {
    var name = "myFunc";

    var funcs = {
        myFunc: function(){
            alert("Hi!");
        }
    };

    funcs[name]();
})();
eval(name)();

eval并不总是邪恶的。 它确实有它的用途。

如果您真的不喜欢评估,请尝试将变量存储在对象中:

(function () {
    var vars = {};

    vars.myFunc = function(){
        alert("Hi!");
    };

    vars.name = "myFunc";
    //vars.myFunc();  // work

    vars[vars.name]();    
})();

更改

myFunc = function(){

this.myFunc = function(){

然后这将工作:

this[name]();

演示: http//jsfiddle.net/B7QVj/6/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM