2010-12-20 41 views
0

通过调用父级方法在许多子级中触发方法的最佳方法是什么?通过触发Parent方法触发实例方法

例如,可以说我有其中有许多情况下,父对象的Foo:BarX,巴里等

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的实例?

+0

只是一个词汇表:BarX和BarY不是Foo的孩子,他们是实例。 – 2010-12-20 20:25:10

+0

谢谢你的词汇说明。固定在原来的文章。 – Empereol 2010-12-20 20:45:14

回答

3

不,但你可以更聪明一些。在Foo上制作静态moveAll功能。例子使事情更清楚。 Here is the fiddle

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();