Sie haben Ihre Antwort bereits in den Kommentaren erhalten, daher ist dies nur eine kurze Information:
Sie verwenden this.currentRender
die sich - wenn die Funktion im globalen Bereich liegt - auf eine Variable im globalen Bereich bezieht. D.h. auf die window
Objekt des Browsers. Und Dinge in den globalen Bereich zu stellen, ist sehr selten eine gute Idee.
Technisch gesehen, sollten Sie die todos Ihren Code in einem einzigen Namespace oder sogar innerhalb einer Funktion, die sofort aufgerufen wird, damit er den globalen Bereich nicht verschmutzt. Sie können jedoch damit beginnen, dass Sie einfach die currentRender
Variable aus dem globalen Geltungsbereich zu entfernen, indem Sie dies tun:
var updateRender = (function () {
var currentRender = null;
return function (klass) {
doPreprocessing();
currentRender = new klass();
doPostProcessing();
};
}());
die updateRender
Funktion befindet sich immer noch im globalen Bereich, aber zumindest die currentRender
ist sicher innerhalb eines Abschlusses versteckt, so dass nur updateRender
ändern kann (auch bekannt als privilegierter Zugriff).
Was die Verwendung von klass
anstelle von Class
Das liegt ganz bei Ihnen. Verwendung von klass
ist nur eine gängige Methode, um die " class
ist ein Schlüsselwort"-Problem in Ruby.