Ich bin ziemlich neu in Javascript und schreibe eine Chrome-Erweiterung, die den "Klick" Funktionsaufruf in einer Liste von E-Mails auf einer E-Mail-Website kompensiert. Mein Problem ist, dass die Funktionen, die ich versetze, durch Verweis weitergegeben werden, was dazu führt, dass sie schließlich alle auf ein einzelnes Klickereignis verweisen.Wie man eine "tiefe" Kopie einer Funktion macht - Javascript
Mein Code:
//Offsets the email links
for (var i = emails.length - 1; i >= amountToRemove; i--) {
var a = emails[i];
var b = emails[i - amountToRemove];
a.addEventListener('click', (x) => {b.click(); x.stopPropagation(); return false;})
}
Und ein wenig Ausarbeitung des Problems: dh. sagen Sie mengeToRemove ist 2 und i = 10; die ersten beiden "shifts" von click() - Ereignissen funktionieren gut, aber in der 3. Schicht verweist die click() - Funktion für das 9. (letzte) und das 7. Objekt im Array auf dieselbe Funktion, was nicht beabsichtigt war. Ich habe versucht, eine „tiefe Kopie“ der Funktion macht ohne Erfolg mit
JSON.parse(JSON.stringify(object))
sowie andere Methoden, die von dem Internet empfohlen.
Meine Frage ist, gibt es eine Möglichkeit, eine "tiefe" Kopie der .click() - Funktionen, so dass sie nicht auf das gleiche Objekt zeigen und jedes Klickereignis auf den gleichen einzelnen Klick zeigen Veranstaltung?