我正在寻找一种方法来强制我的所有对象在原型(prototype)中拥有自己的对象实例。原型(prototype)中的这个对象有它自己的私有(private)变量。我不想分享这个对象。我该怎么办?
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,
...
};
};
如何实现这一目标?
最佳答案
如果私有(private)性对您来说比使用原型(prototype)更重要(原型(prototype)方法无法访问私有(private)实例变量)并且您不打算克隆实例(“私有(private)”实例变量只能由实例访问,而不能由类访问,如下所示)在 java )。通过继承,覆盖父级的函数会更加复杂,但有一些方法可以做到这一点:(将所有“类”代码放入构造函数中)How to call parent class' method from a subclass in JavaScript so that parent's local variables would be accessible?
我从不使用“私有(private)”实例变量,但 Bergi 使用模块模式的建议是拥有“私有(private)”函数(每个实例不是唯一的)的好方法,因为函数对于所有实例都可以相同。
将此添加为答案而不是评论,因为该问题显示为有 0 个答案,但我认为 Bergi 在回答评论中的问题方面做得很好。
关于javascript - 强制原型(prototype)在对象的新实例中具有新的父对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18418653/