我正在寻找一种方法来强制我的所有对象在原型中拥有它自己的对象实例。原型中的这个对象有自己的私有变量。我不想分享这些对象。我该怎么办?
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();
}();
Map对象如下所示:
function(){
//private variables with methods
return {
func: someFunc,
...
};
};
如何实现这一目标?
答案 0 :(得分:0)
如果私有性比使用原型更重要(原型方法无法访问私有实例变量)并且您没有计划克隆您的实例(“私有”实例变量只能由实例访问而不是由类访问在Java)。使用继承然后覆盖父级的函数会更复杂,但有办法:(将所有“类”代码放在构造函数中)How to call parent class' method from a subclass in JavaScript so that parent's local variables would be accessible?
我从不使用“私有”实例变量,但Bergi建议使用模块模式是一个很好的具有“私有”函数(每个实例不唯一),因为函数可以对所有实例都相同。
将此作为答案而不是评论添加,因为问题显示为0答案,但我认为Bergi在评论中回答了问题。