0

通过调用父母的方法在许多孩子中触发方法的最佳方法是什么?

例如,假设我有一个父对象 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 的实例?

4

1 回答 1

3

不,但你可以更聪明一点。在 上做一个静态 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();
于 2010-12-20T20:43:03.523 回答