我可以在javascript中获取原型的所有实例吗?

时间:2014-02-11 03:43:04

标签: javascript prototype

获取对象的原型很容易,但有没有办法获得具有特定原型的所有实例?

这样的事情:

var allAnimals = Animal.prototype.getInstances();

可以编写自定义代码来跟踪实例化对象,但我对是否有任何内置方法感兴趣。

2 个答案:

答案 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中的

将包含两个已创建的对象