【发布时间】:2013-11-02 01:29:21
【问题描述】:
我正在使用一个预先构建的客户端应用程序,全部使用 Dojo 1.8(AMD 风格)编写,我需要对其进行扩展。
我可以访问源代码,但希望尽可能保持不变,而是支持覆盖(这就是应用程序插件框架的工作方式,其他任何东西都是黑客行为)。
我的脚本仅在基本应用程序脚本之后加载。例如,我不能修改 djConfig,也不能在加载基本应用程序模块之前发生任何其他事情。
这是我的问题:我想扩展一个基础应用程序类(使用声明创建)并在全局范围内应用我的覆盖——即使在已经需要包含此类的模块的预加载模块上(但尚未实例化)它)。
到目前为止,我发现的最佳解决方案是使用 require() 为包含该类的模块设置别名。但这仅适用于在我注册别名后需要该类的模块。
【问题讨论】:
-
最好的方法是覆盖你想要编辑的模块的原型。您可以直接使用原型或使用 dojo.extend 来执行此操作。另请查找“道场猴子修补”