获取对象的原型很容易,但有没有办法获得具有特定原型的所有实例?
这样的事情:
var allAnimals = Animal.prototype.getInstances();
可以编写自定义代码来跟踪实例化对象,但我对是否有任何内置方法感兴趣。
答案 0 :(得分:0)
您可以获取在此窗口上创建的实例
var o = [];
(for i in window)
{
if(window[i] instanceof Animal) o.push(window[i]);
}
但是这段代码没有得到窗口上没有创建的实例......
您可以在Animal
上创建一个方法来创建该实例,并将其保存在集合中:
+function () {
var AnimalInstances = [];
Animal = function (flag) {
if (!flag) throw new Error("Invalid Instantiation");
};
Animal.Create = function () {
var o = new Animal(true);
AnimalInstances.push(o);
return o;
};
Animal.GetInstances = function () {
return AnimalInstances;
};
}();
或:
+function () {
var AnimalInstances = [];
Animal = function () {
AnimalInstances.push(this);
}
Animal.GetInstances = function () {
return AnimalInstances;
};
}();
答案 1 :(得分:0)
您可以尝试这样的事情
function A(f){
this.field = f;
A.instances.push(this);
}
A.instances = [];
所以
之后var one = new A(10), two=new A('123');
A.instances
中的将包含两个已创建的对象