Ich habe mehrere Methoden, die ich im Grunde auf die gleiche Weise in neue Methoden einbinden muss. Meine erste Lösung funktioniert nicht, und ich verstehe warum, aber ich weiß nicht, ob es eine einfache Lösung für dieses Problem gibt oder ob es nicht so funktioniert, wie ich es möchte.Wie kann ich Methoden methodisch in neue Methoden ersetzen?
Hier ist ein Beispiel. Ich habe Objekte a-c, die eine onClick-Methode haben. Ich muss vor den onClick-Methoden etwas Code ausführen. Ich habe versucht, die folgenden:
// objects a-c
a = {onClick : function() { console.log('a'); }};
b = {onClick : function() { console.log('b'); }};
c = {onClick : function() { console.log('c'); }};
// first try
var arr = [a, b, c]
for (var i = 0; i < arr.length; i++) {
var oldOnClick = arr[i].onClick;
arr[i].onClick = function() {
// new code here
oldOnClick();
}
}
// outputs 'c'
// what i want is to maintain a reference to the original method
// so in this case, execute my new code and output 'a'
a.onClick();
Das funktioniert nicht, weil, wenn die neue Methode aufgerufen wird, oldOnClick dem Verfahren aus der letzten Iteration und nicht die zu Verfahren zeigen wird, wenn es zugewiesen wurde.
Gibt es eine einfache Lösung, die ich übersehen habe?
ahh .. ja b/c, die sofort ausgeführt werden. thx, ich dachte, es gäbe eine einfache lösung. :) –
+1 für die Schließung Verwendung – dfa