首先发布在这里。找不到任何人问同样的问题,所以我一定是错的。
背景故事: 我正在写我的第一个钱包JS画布基于8位冒险游戏。我写了一个概念证明,我非常满意,现在我想回去重构我的工作,尽可能干净,优雅,可重复使用。我熟悉高级JS和设计模式,我希望尽可能多地使用它们。
我在哪里: 我有以下对象:屏幕,控件,场景,播放器,精灵和主要 所有这些都使用Module模式,并通过requireJS加载。
现在我想制作更多游戏对象,以不同的行为扩展基础Sprite对象。甚至可以扩展Module模式,以便您仍然可以访问基础protype的方法吗?
例如,我想向某些模块添加walk和talk行为,这会影响它们的底层更新和绘制方法。我认为通过prototypcal链调用每个原型方法,这将是基本的,但事实证明它比我预期的要困难。
任何人都有一个Decorator或Composition模式的例子,可以应用于Module模式并创建具有不同行为的对象吗?
如果不可能,我该怎么办呢? 我应该完全废弃模块模式吗?
答案 0 :(得分:0)
应该可以:
define('mod1', function() {
...
});
define('mod2', ['mod1'] function(Mod1) {
Mod1.prototype.newFunction = function() {
...
};
});