0

我有这个模块:

define(function() {
   clickHandlerA = function() { ... }
   clickHandlerB = function() { ... }

   return {
     handle : function(param) {
        doSomething(param);
        var handler = 'clickHandler' + param;
     }
   }
}

现在,我需要以某种方式调用适当的点击处理程序。我试过了

if (typeof handler  == 'function') {
   handler.call();
}

我也试过

if (handler in this) {
   handler();
}

但没有一个工作。有什么建议么?

4

1 回答 1

1

我知道你需要的是这个:

define(function() {
   var handlers = {
      A: function() { ... },
      B: function() { ... }
   };

   return {
     handle : function(param) {
        doSomething(param);
        return handlers[param];
     }
   }
}

所以你可以从外面做这个

 yourModule.handle('A')();
于 2013-09-02T11:56:57.570 回答