Javascript:模块模式与构造函数/原型(prototype)模式?

标签 javascript design-patterns unobtrusive-javascript module-pattern

我想知道是模块模式还是构造函数/原型(prototype)模式更适合我的工作。

基本上我使用的是不显眼的 javascript -- HTML 文档有对 .js 文件的引用。

我对模块模式的理解:

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

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

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

  • 用于创建对象
  • 使用继承(即父类(super class)型的子类型)

我是否正确,为了提供不显眼的 javascript,模块模式是理想的?

最佳答案

构造函数和原型(prototype)是实现类和实例的合理方法之一。它们并不完全对应于该模型,因此您通常需要选择特定的方案或辅助方法来根据原型(prototype)来实现类。 ( Some background on classes in JS .)

模块模式通常用于命名空间,您将有一个实例作为存储来对相关函数和对象进行分组。这是一个不同于原型(prototype)设计的用例。他们并不是真的在互相竞争;您可以非常愉快地同时使用两者(例如,将构造函数放在模块中并说 new MyNamespace.MyModule.MyClass(arguments))。

关于Javascript:模块模式与构造函数/原型(prototype)模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3790909/

相关文章:

java - 指定扩展类的通用类型参数?

javascript - 使用 JQuery 更改下拉菜单的选定选项

javascript - 如何在 KnockoutJs 中为此使用绑定(bind)处理程序

javascript - 800 毫秒后删除下一个 div 的类

java - 委托(delegate)对象产生重复代码 : (inheritance vs delegates)

java null/empty-list 返回与代码中抛出异常重新思考其余世界的最佳实践

jquery - 尝试使用rails中的js.erb文件刷新由index.html.erb加载的div

JavaScript:点击链接应该以惊人的方式消失

javascript - 动态创建的元素上的事件绑定(bind)?

javascript - 如何使用带有 ES6 箭头符号的 d3 的每个方法