javascript扩展模块模式

Posted

技术标签:

【中文标题】javascript扩展模块模式【英文标题】:javascript extending the module pattern 【发布时间】:2012-12-19 10:06:34 【问题描述】:

第一次发帖。找不到任何人问同样的问题,所以我一定是搞错了。

背景故事: 我正在编写我的第一个基于钱包 JS 画布的 8 位冒险游戏。我写了一个我非常满意的概念证明,现在我想回去重构我的工作,使其尽可能干净、优雅和可重用。我熟悉高级 JS 和设计模式,我想尽可能多地使用它们。

我在哪里: 我有以下对象:屏幕、控件、场景、播放器、精灵和主 所有这些都使用模块模式,并通过requireJS加载。

现在我想制作更多的游戏对象,以不同的行为扩展基础 Sprite 对象。是否甚至可以扩展模块模式,以便您仍然可以访问底层原型的方法?

例如,我想向某些模块添加走路和说话行为,这会影响它们的底层更新和绘制方法。我认为通过原型链调用每个原型方法将是基本的,但事实证明这比我预期的要困难。

任何人都有一个装饰器或组合模式的示例,可以应用于模块模式并创建具有不同行为的对象?

如果不可能,我该怎么做? 我应该完全放弃模块模式吗?

【问题讨论】:

【参考方案1】:

应该可以:

define('mod1', function() 
   ...
);

define('mod2', ['mod1'] function(Mod1) 
   Mod1.prototype.newFunction = function() 
   ...
   ;
);

【讨论】:

以上是关于javascript扩展模块模式的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义 mysql 模式的模块扩展 ejabberd?

javascript 建模 - 模块 - 页面扩展多选数据带出id并传到新页面

可扩展架构系统的探讨

设计模式六大原则:开闭原则

oop思维意识,类 模块命名空间,类扩展之继承 组合mixin三种模式

Iptables 之二扩展模块