2

我有一个Graph类,我想将其原型函数传递给另一个函数。这里是类如何通过一个原型函数和在javascript中使用

function Graph(opts) { 
    this.filled = opts.filled; 
    this.max = opts.max || 50; 
    this.min = opts.min || 0; 
    this.fixed = 60; //px 

    this.transitionArr = []; 
    this.timeoutArr = []; 
}; 

Graph.prototype.stopAnimation = function() { 
    //stop any css3 transition by removing animation properties 
    this.removeAnimProps(); 
    //stop if there is any timeout 
    for (var i = 0; i < this.timeoutArr.length; i++) { 
     clearTimeout(this.timeoutArr[i]); 
    } 

    for (var i = 0; i < this.transitionArr.length; i++) { 
     this.transitionArr[i].stop(); 
    } 
}; 

而我正在试图做的做的一个小片段代码通stopAnimation功能遍历所有对象,停止所有动画中的所有对象:

function iterateOverAll(userFunc){ 
    for (var i = 0; i < GraphArr.length; i++) { 
     GraphArr[i].userFunc(); 
    } 
} 

iterateOverAll(Graph.prototype.stopAnimation); 

然而,我不知道该怎么做。请帮忙吗?

回答

3

如果你想使用的功能参数,你可以通过这样的:

function iterateOverAll(callFunc){ 
    for (var i = 0; i < GraphArr.length; i++) { 
     callFunc.apply(GraphArr[i],[]); 
    } 
} 

iterateOverAll(Graph.prototype.stopAnimation); 

这将调用你的函数在所有对象,但不带任何参数。我认为你可以修改这个函数的任何参数。

+0

谢谢。我不知道应用了这个功能。 – 2013-03-05 11:41:53

0

如果您已有一系列图形,则无需传递该函数。

function iterateOverAll(){ 
    for (var i = 0; i < GraphArr.length; i++) { 
     GraphArr[i].stopAnimation(); 
    } 
} 

iterateOverAll(); 
+0

我知道,但我确实有很多功能,比如'stopAnimation'。例如,'startAnimation','resetAnimation','resetGraph'。因此,我需要以通用的方式来完成。 – 2013-03-05 09:52:07

相关问题