我想知道模块模式或构造函数/原型模式是否更适用于我的工作。

基本上,我正在使用Unbrowusive JavaScript -HTML文档对.js文件的引用。

我对模块模式的理解:

  • 调用初始方法(基本上是我可以使用模块模式创建和返回的公共方法)
  • 在INIT方法中,分配所有点击事件等。

这听起来像是我情况的理想模式,因为我不需要创建对象和继承层次结构等。

我对构造函数/原型模式的理解:

  • 用于创建对象
  • 用于使用继承(IE的亚型)

我是正确的吗,对于提供不引人注目的JavaScript,模块模式是理想的?

有帮助吗?

解决方案

构造函数和原型是实施类和实例的合理方法之一。它们与该模型不太对应,因此您通常需要选择特定的方案或助手方法来实现原型。 ((JS中的课程背景.)

该模块模式通常用于命名区,其中您将拥有一个实例作为与组相关的功能和对象的存储。这与原型制作的用例不同。他们并不是真正的互相竞争;您可以很高兴地一起使用两者(例如将构造函数函数放入模块中,然后说 new MyNamespace.MyModule.MyClass(arguments)).

其他提示

模块图案比原型更容易,更优雅。但是,首先思考移动设备。它不是中/大对象的相关模式,因为初始化需要在开始之前解析整个块。多个封闭还会产生垃圾收集器无法免费的循环依赖性(尤其是IE),它会导致较重的内存足迹在关闭窗口(或选项卡)之前才释放 - 检查Chrome Task Manager以比较 - 加载时间是相反的使用模块模式与对象大小成比例,而原型继承不是这种情况。上面的陈述通过这样的多个基准进行了验证: http://jsperf.com/prototypal-performance/54

如上一测试所示。小物体最好将其初始化为普通对象(没有这些模式)。它适用于不需要闭合或继承的单个对象。明智的做法是评估您是否需要这些模式。

原型模式有助于我们扩展功能,而在内存中只有一个功能实例,而与对象数量无关。在模块模式中,每个对象都会在内存中创建一个新的函数实例,但它提供了私有/公共变量的概念,并有助于封装变量和函数。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top