Javascript:模块模式vs构造函数/原型模式?
我想知道模块模式或Constructor / protoType模式是否更适用于我的工作。
基本上我使用不显眼的JavaScript - HTML文档有一个对.js文件的引用。
我对模块模式的理解:
这听起来像是我的情况的完美模式,因为我不需要创建对象和继承层次结构等。
我对构造函数/原型模式的理解:
我是否正确,为了提供不引人注意的JavaScript,模块模式是理想的?
构造函数和原型是实现类和实例的合理方法之一。 它们不完全对应于该模型,因此您通常需要选择特定的方案或辅助方法来按原型实现类。 (关于JS中的类的一些背景。)
模块模式通常用于命名空间,其中您将有一个实例作为存储来对相关函数和对象进行分组。 这与原型设计的好处不同。 他们并不真正相互竞争; 你可以很高兴地一起使用它们(例如,在模块中放置一个构造函数,并说new MyNamespace.MyModule.MyClass(arguments)
)。
模块模式比原型更容易和更优雅。 但是,首先想到移动。 它不是中等/大型对象的相关模式,因为初始化需要在启动之前解析整个块。 多个闭包还会创建循环依赖关系,垃圾收集器不会释放(特别是IE),这会导致内存占用更大,直到窗口(或标签)关闭时才释放 - 检查chrome任务管理器以进行比较 - 加载时间相反与使用模块模式的对象大小成比例,而原型继承则不是这种情况。 上面的声明通过多个基准来验证,例如:http://jsperf.com/prototypal-performance/54
如上次测试中所见。 小对象最好被初始化为普通对象(没有这些模式)。 它适用于不需要关闭或继承的单个对象。 评估你是否需要这些模式是明智的。
你可以尝试折叠模式,这里有一个链接:Javascript折叠模式
我还留下了类似问题的答案,该答案显示了如何使用折叠图案:
折叠图案的简单例子
链接地址: http://www.djcxy.com/p/50129.html上一篇: Javascript: Module Pattern vs Constructor/Prototype pattern?
下一篇: Simple javascript inheritance using $.extend and module pattern