В Javascript, как я могу пройти через объекты, унаследованные от данного конструктора? - PullRequest
0 голосов
/ 27 ноября 2011

В следующем примере, как бы я зациклился на каждом объекте из прототипа яблока?

function apple(id,name,color) {
    this.id = id;
    this.name = name;
    this.color = color;
}


apple1 = new apple(0,"Golden Delicious","Yellow");
myapple = new apple(1,"Mcintosh","Mixed");
anotherapple = new apple(2,"Bramley","Green");



/*
for each instance of apple {

  if (this one is "Green") { do something }

}
*/

Ответы [ 2 ]

2 голосов
/ 27 ноября 2011

Я бы использовал что-то вроде статического свойства, которое содержит ссылки на все экземпляры. Вы добавите каждый экземпляр в конструктор:

function apple(id,name,color) {
    this.id = id;
    this.name = name;
    this.color = color;
    apple.instances.push(this);
}
apple.instances = [];

Затем вы можете просмотреть apple.instances.

1 голос
/ 27 ноября 2011

Я использую заглавное имя для конструктора, чтобы подсветка синтаксиса получала его:

function Apple(name,color) {
    this.name = name;
    this.color = color;
    this.id = this.constructor.getId();
    this.constructor.instances[this.id] = this;
}

Apple.instances = {};

Apple.getId = (function(){
var i = 0;

    return function(){
    return i++;
    };

})();

/* ... */


var instance, key;

for( key in Apple.instances ) {
instance = Apple.instances[key];

    if( instance.color == "green" ) {
     delete Apple.instances[instance.id];

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...