Запуск методов экземпляра с помощью метода Parent - PullRequest
0 голосов
/ 20 декабря 2010

Каков наилучший способ запуска метода во многих дочерних элементах путем вызова метода родителя?

Например, допустим, у меня есть родительский объект Foo, который имеет много экземпляров: BarX, BarY и т. Д.

Foo = function(){
   x = null;
   y = null;
   move = function(){
      x += 1;
      y += 1;
   };
}

BarX = new Foo();
BarX.x = 50;
BarX.y = 50;

BarY = new Foo();
BarY.x = 200;
BarY.y = 200; 

Есть ли простой способ отключить функцию перемещения во всех случаях?Я ограничен циклом прохождения экземпляров и таким образом запускаю функцию, или я могу как-то запустить функцию в Foo и заставить ее работать и запускать все экземпляры, расширяющие Foo?

1 Ответ

3 голосов
/ 20 декабря 2010

Нет.Но вы могли бы быть более умным об этом.Сделайте static moveAll функцию на Foo.Примеры проясняют ситуацию. Вот скрипка .

var Foo = function(x, y){
   this.x = x;
   this.y = y;
   this.move = function(){
      x += 1;
      y += 1;
      alert(x + ' ' + ' ' + y);
   };
   Foo.instances.push(this); // add the instance to Foo collection on init
};
Foo.instances = [];
Foo.moveAll = function(){
    for(var i = 0; i < Foo.instances.length; i++)
        Foo.instances[i].move();
}

var a = new Foo(5, 6);
var b = new Foo(3, 4);

Foo.moveAll();
...