类代码结构,使用非立即执行的模块模式变体
Class like code structure using non immediately executing varient of the module pattern
我已经熟悉模块模式,在该模式中,我们用函数闭包和一组公开的公共方法定义了一个具有私有状态的模块。然而,这似乎更接近于单例而不是对象。
然而,如果我想要一个更面向对象的模式,我可以使用与模块模式相同的结构,但不立即执行吗
function MyPseudoClass(constructorArg0, constructorArg1... ) {
var privateVar = "private!!";
var privateComplexVar = constructorArg0;
var privateComplexVar1 = constructorArg1;
return {
publicVar: "public Varaible!",
publicMethod: function() {
//code
return privateVar + 1;
}
};
现在,在我的代码中,我可以创建伪类的实例,如下所示:
var instance = MyPseudoClass({p : 2, q : 100},"x")
var anotherInstance = MyPseudoClass({p : 3, q : 230},"y")
据我所知,这似乎是我想要的,但我还没有在网上看到有人使用这种方法,我应该意识到这种方法有什么缺点吗?
您没有使用原型继承;这是主要区别。你的主要缺点是:
- 您不能使用
instanceof
来确保变量是某种类型的(因此您不能执行myVar instanceof MyPseudoClass
。您不使用此方法创建实例;您只创建一个对象 - 基于原型的方法可能会更快,因为闭包会带来开销。此外,在原型化方法中,每个实例将共享一个函数的同一个实例(分配给原型)。但在闭包方法中,每个"实例"都有自己的函数副本。然而,差异很小(尤其是在较新的浏览器中)
如果你不担心这些缺点,你应该没事。
相关文章:
- 执行模块时发送事件
- 我应该总是将模块调用到var中,还是在节点中立即执行
- 如何防止模块的运行块在测试期间被执行
- webpack在全局范围内执行模块
- 全局安装的NodeJS npm模块不执行节点的主/bin JavaScript文件
- NodeJS-如何为模块分配构造函数.导出自执行函数
- 使用node.js模块,在什么情况下模块会被执行两次
- 类代码结构,使用非立即执行的模块模式变体
- 如何确保 Dojo 模块按特定顺序执行
- 杜兰达尔/要求:模块加载和执行
- 如何使用模块在 angular1.5 中绑定后执行函数
- 无法在模块中执行回调,使用 Node-Cron导出对象
- Node 的断言模块是否提供了一种在没有强制的情况下执行深度相等检查的方法?
- RequireJS:模块函数是每次导入模块时执行还是第一次执行
- 为什么在javascript中实现模块模式时要执行自我执行
- 浏览器化只执行一次模块代码,在多个需要调用上
- 为什么我的模块的执行顺序与预期不同
- 执行注入特定变量的 NodeJS 模块
- 在JS模块加载的上下文中,什么是立即执行的工厂函数
- 如果requireJS模块在$上设置了全局变量,我如何仅在全局变量被分配时执行模块代码