这是一个可能的解决方案,您可能会发现它很有用...
拥有所有逻辑所在的函数命名空间,例如:
this.fn = {};
this.fn['save'] = function() {};
this.fn['load'] = function() {};
当您的事件被触发时,您只需使用适当的函数,如下所示:
var fn = this.fn['load'];
或者
var fn = this.fn['save'];
然后像往常一样使用“fn”。
您甚至可以按模块分隔函数,例如“online.js”和“offline.js”,其中每个模块具有相同的函数名称,但绑定到自己的命名空间。
当需要重新链接功能时,您可以简单地执行以下操作:
this.fn['load'] = offlineModule.fn['load'];
如果你的所有函数都有一个名称(即:'load'、'save'),你可以简单地将它放在一个循环中。
以上避免了所有有时会令人讨厌的“if/else”条件分支,而是尝试使用一种模式。
但无论如何,这是一个很好的问题,因为我正在开始一个项目的规划阶段,我需要类似于您在问题中描述的内容......到目前为止,这是我拥有的最佳解决方案。基本上受到 Linux 中 SO 的动态链接的启发(有点)。