1

我正在寻找一种方法来强制我的所有对象在原型中都有自己的对象实例。原型中的这个对象有它自己的私有变量。我不想分享这些对象。我应该怎么办?

new function () {
  "use strict";
  function Controls() { };
  Controls.prototype = new Application.Utils.Map(); //instance of this object is shared between all of new Controls objects. I want have new Map object for each new Controls Object. 
  Application.Stored.UI.Controls = new Controls();
  Application.Stored.UI.Controls2 = new Controls();
}();

地图对象如下所示:

function(){
  //private variables with methods
  return {
    func: someFunc,
    ...
  };
};

如何做到这一点?

4

1 回答 1

0

如果私有性对您来说比使用原型更重要(原型方法无法访问私有实例变量)并且您不打算克隆您的实例(“私有”实例变量只能由实例访问,而不是像 Java 中的类) . 使用继承,然后覆盖父类的功能会更复杂,但有一些方法可以做到:(将所有“类”代码放在构造函数中)如何在 JavaScript 中从子类调用父类的方法,以便可以访问父类的局部变量?

我从不使用“私有”实例变量,但 Bergi 建议使用模块模式是一个很好的具有“私有”函数(每个实例不是唯一的)的建议,因为一个函数对于所有实例都是相同的。

将此添加为答案而不是评论,因为问题显示为有 0 个答案,但我认为 Bergi 在评论中回答问题时做得很好。

于 2013-08-25T00:30:14.407 回答