module-pattern - 我可以使用带有 javascript 模块模式的类吗?

标签 module-pattern javascript

我有一堆跟在 "JavaScript Module Pattern" as described in this popular article 后面的“模块”。 .据我了解,这些模块是将各种行为聚合到整洁的命名空间中的一种方式。

但是,如果我希望能够创建一个接受参数的唯一对象实例呢?就目前而言,我不能这样做,因为所有数据都是共享/静态的。我希望能够做到这一点:

var foo = new Some.Namespace.Whatever.Foo(config);

我无法更改模式的结构,因为我们已经使用了一段时间,而且效果很好。我只想对其进行调整,以便可以将一些“类”放入其中,以处理非静态数据。

最佳答案

为什么不试试这个?

var MODULE = (function () {
  var my = {};

  my.SomeClass = SomeClass;
  function SomeClass(six) {
    this.six = six;
  }
  SomeClass.prototype.five = 5;

  return my;
})();

当您调用 var obj = new MODULE.SomeClass(6)它会给你一个新的对象。 obj.fiveSomeClass 的所有实例之间共享因为它附在原型(prototype)上。但是,obj.six特定于该实例,因为它附加到 obj .

或者,您可能不需要将您的类放在模块中。您可以在适当的情况下使用类来替换模​​ block ,因为在这种情况下,模块和类都有一些重叠的功能。

关于module-pattern - 我可以使用带有 javascript 模块模式的类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15252441/

相关文章:

Javascript 揭示模块模式、公共(public)属性

javascript - 模块模式中 get/set 和 Object.defineProperty 的区别

javascript - Konva - 线不接触圆 - 圆和线之间的间隙

javascript - 将数组值与对象键进行比较并将值设置为数组

javascript - 通过 Google Maps API 计算行车距离

JavaScript 设计模式 : how to create sub-module and access parent module private vars and functions

javascript - 如何在真实示例中使用 javascript 模块模式?

javascript - jQuery 表总和更改 keyup()?

javascript - 提供可下载的 perl-template 文件

javascript - 使用 browserify 时闭包/模块模式是否已过时?