javascript扩展模块模式

标签 javascript design-patterns module decorator

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

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

我在哪里: 我有以下对象:Screen、Controls、Scene、Player、Sprite 和 Main 所有这些都使用 Module 模式,并通过 requireJS 加载。

现在我想制作更多游戏对象来扩展具有不同行为的基本 Sprite 对象。甚至可以扩展模块模式,以便您仍然可以访问底层原型(prototype)的方法吗?

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

谁有可以应用于模块模式并创建具有不同行为的对象的装饰器或组合模式的示例?

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

最佳答案

应该可以:

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

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

关于javascript扩展模块模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14166115/

相关文章:

android - 有没有办法让复合小部件在 flutter 中继承它所组成的小部件的属性?

javascript - 未触发操作 - React-Redux 计数器示例

javascript - 尝试使用 Javascript 和 CSS 绘制网格元素

javascript - 当用户登录时,必须显示注销按钮,但不会立即显示。为什么会发生这种情况?

model-view-controller - Java EE 架构和模式

python - 从同一级别的另一个模块导入 Python 模块

javascript - 使用 jQuery 在 Mousedown/up 上播放/暂停音频

c# - ASP.NET MVC 4 中的 Global.asax.cs 文件采用什么模式?

c - C中调用模块初始化代码的自动编译时机制

angular - 'mat-form-field' 不是已知元素 - Angular 4 和 Angular Material 2