首页 > 同一个上下文,怎样动态执行函数?

同一个上下文,怎样动态执行函数?

有段时间没关注这个问题了,现在回头看了看,觉得问题问的不太对劲。那我重新改一下:

如题,在同一个上下文中,怎样动态执行函数?

举个栗子:

var abc = function(){...}
abc();

当这个abc是动态获得的情况下,比如想实现这种需求:

var funName = 'abc';
xx[funName]();

看到这里,各位看官应该懂我的意思了。只不过这里的xx,能换成什么呢。
之前问的问题很不恰当,这个跟上下文没啥关系,其实就是当前作用域


window['abc']();

假如contextwindow环境当然这是可以的啦,但假如不是呢?
this['abc']获取不到

想在网上搜都不知道该怎么组织关键字。。


觉得这问题好经典,真想给自己加个精(当然,如果有。。)

来吧各位大神,求教育


又过了很长时间,回头看到了我发的这个问题。

想了下,我擦,其实很好解决啊,既然我想要这样获取xx[funName]();,那xx就做成个map呗:

var xx = {
  'abc': function() {}
};

想想就乐了。。。我当时咋想的。。。

哦,好吧,好像想起来咋想的了,我其实当时想要的是,有没有不需要自己维护的方式直接获取当前域下的所有变量集合。
不过应该是没有的。

结贴


var anonyCall = function(name) {
    var calleeList = new function() {
        this.hi= function(who) {
            console.log('this is hi, how do you do ', who);
        };
        this.add = function(m, n) {
            return m + n;
        };
    }();
    try {
        return calleeList[name].apply(calleeList, [].slice.call(arguments, 1));
    } catch(e) {
        throw 'function not found: ' + name;
    }
};

anonyCall('hi', 'Bob');
console.log(anonyCall('add', 3, 5));
anonyCall('unknown');
【热门文章】
【热门文章】