2 Stimmen

Wie gibt eine Prototypenfunktion und verwenden Sie in Javascript

Ich habe eine Graph-Klasse und möchte ihre Prototypfunktion an eine andere Funktion übergeben. Hier ist ein kleiner Code-Schnipsel der Klasse

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

Und was ich versuche zu tun ist, die stopAnimation Funktion zu übergeben, um über alle Objekte zu iterieren und alle Animationen in allen Objekten zu stoppen:

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

iterateOverAll(Graph.prototype.stopAnimation);

Aber ich bin mir nicht sicher, wie das geht. Kann mir bitte jemand helfen?

3voto

Elephant Punkte 1346

Wenn Sie eine Funktion als Argument verwenden möchten, können Sie sie wie folgt übergeben:

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

iterateOverAll(Graph.prototype.stopAnimation);

Dadurch wird Ihre Funktion über alle Objekte aufgerufen, jedoch ohne Argumente. Ich denke, Sie können diese Funktion für beliebige Argumente ändern.

0voto

Kevin Bowersox Punkte 90706

Wenn Sie bereits ein Array von Diagrammen haben, müssen Sie die Funktion nicht übergeben.

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

iterateOverAll();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X