Mar*_*tin 73 javascript design-patterns unobtrusive-javascript module-pattern
我想知道模块模式或Constructor/protoType模式是否更适用于我的工作.
基本上我使用的是不引人注目的javascript - HTML文档引用了.js文件.
我对模块模式的理解:
这听起来像是我情况的完美模式,因为我不需要创建对象和继承层次结构等.
我对构造函数/原型模式的理解:
我是否正确,为了提供不引人注目的javascript,模块模式是理想的?
bob*_*nce 68
构造函数和原型是实现类和实例的合理方法之一.它们与该模型并不完全对应,因此您通常需要选择特定的方案或辅助方法来实现原型方面的类.(关于JS中类的一些背景知识.)
模块模式通常用于命名空间,您可以在其中使用单个实例作为存储来对相关的函数和对象进行分组.这与原型设计有利的用例不同.他们并没有真正相互竞争; 你可以非常高兴地将两者结合使用(例如,在模块中放置构造函数并说出来new MyNamespace.MyModule.MyClass(arguments)
).
Yan*_* VR 12
模块模式比原型更容易,更优雅.但是,首先考虑移动.它不是中/大对象的相关模式,因为初始化需要在开始之前解析整个块.多个闭包还创建了垃圾收集器不会释放的循环依赖(特别是IE),它会导致更大的内存占用,直到窗口(或选项卡)关闭才释放 - 检查chrome任务管理器进行比较 - 加载时间是反向的使用模块模式与对象大小成比例,而原型继承不是这种情况.上述声明通过多个基准验证,例如:http://jsperf.com/prototypal-performance/54
如上次测试所示.最好将小对象初始化为普通对象(没有这些模式).它适用于不需要封闭或继承的单个对象.评估您是否需要这些模式是明智的.