代码之家  ›  专栏  ›  技术社区  ›  Martin

Javascript:模块模式vs构造函数/原型模式?

  •  73
  • Martin  · 技术社区  · 14 年前

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

    基本上我使用的是不引人注目的javascript——HTML文档引用了.js文件。

    我对模块模式的理解:

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

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

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

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

    4 回复  |  直到 12 年前
        1
  •  70
  •   Community pid    7 年前

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

    new MyNamespace.MyModule.MyClass(arguments) ).

        2
  •  13
  •   Yann VR    12 年前

    模块模式比原型更简单、更优雅。不过,先考虑手机。对于中型/大型对象来说,这不是一个相关的模式,因为初始化需要在开始之前解析整个块。多个闭包还创建了循环依赖项,垃圾收集器不会释放这些依赖项(尤其是IE),这会导致在关闭窗口(或选项卡)之前不会释放更大的内存占用-请检查chrome任务管理器以进行比较- 加载时间与使用模块模式的对象大小成反比,而原型继承则不是这样。 上面的陈述是通过以下多个基准来验证的: http://jsperf.com/prototypal-performance/54

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

        3
  •  4
  •   user1662008    10 年前

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

    推荐文章