揭示模块模式(RMP)的缺点
我最近熟悉了揭示模块模式(RMP),我读了很多关于它的文章。
它看起来是一个非常好的模式,我想开始在一个大项目中使用它。在我使用的项目中:jQuery、KO、Required JS、jQuery Mobile、JayData。在我看来,它将非常适合KO视图模型。
具体地说,我想使用THIS版本。
我找不到使用此模式的缺点,是不是因为没有缺点(我觉得很难相信)?
开始使用之前应该考虑什么?
解决方案
我读了@nemesv向我推荐的那篇文章(感谢:),我认为还有一个没有提到的缺点,所以我想我应该在这里添加它以供参考。下面是这篇文章的引语:
缺点
此模式的一个缺点是,如果私有函数引用 作为公共函数,如果修补程序不能重写该公共函数 是必要的。这是因为私有函数将继续 引用私有实现,并且该模式不适用于 公共成员,仅限于函数。 引用私有变量的公共对象成员也 以上述无补丁规则说明为准。 因此,使用显示模块模式创建的模块 可能比使用原始模块创建的模块更脆弱 模式,所以使用时应小心。
和我的附加内容:
您不能对此模式使用继承。例如:
var Obj = function(){
//do some constructor stuff
}
var InheritingObj = function(){
//do some constructor stuff
}
InheritingObj.prototype = new Obj();
InheritingObj.prototype.constructor = InheritingObj;
这是一个简单的js继承示例,但是在使用Revealing Prototype Pattern(存档的here)时,您需要这样做:
InheritingObj.prototype = (function(){
//some prototype stuff here
}());
这将覆盖您的继承。
相关文章