Funktions-Hijacking entführt, wie der Name schon sagt, eine Funktion, bevor sie ausgeführt wird, und fügt die gewünschte Funktionalität hinzu. Wenn diese Funktion tatsächlich ausgeführt wird, ist sie nicht mehr die ursprüngliche Funktion, sondern verfügt über die von uns hinzugefügten Funktionen. Dies ist auch eines der Prinzipien unserer gemeinsamen Hook-Funktionen.
Auf den ersten Blick sieht dies wie ein Umschreiben einer Funktion aus. Das Umschreiben von Funktionen kann auch als eine Art Funktionshijacking verstanden werden, aber diese Methode ist zu ekelhaft. Nachdem Sie als Entführer Vorteile aus der Entführung erhalten haben, sollten Sie sich auch an die Berufsethik halten und die Person unversehrt zurückgeben. Daher müssen wir die ursprüngliche Funktion der Funktion an der entsprechenden Stelle zurückrufen.
Tatsächlich stoßen wir häufig auf das Konzept des „Hijacking“. Wenn beispielsweise eine Website von einem Betreiber gekapert wird, erscheint beim Surfen auf der Website die Werbung des Betreibers.
Nehmen wir nun ein einfaches Beispiel, kapern die Funktion „alert()“ und fügen ihr eine kleine Funktionalität hinzu:
let warn = alertwindow.alert = (t) => { if (confirm('How are you?')) warn(t) } alert('Help me...!!!')
Sie können die Entwicklung öffnen. Versuchen Sie dies Beispiel mit dem Tool: Sie werden feststellen, dass „Helfen Sie mir...!!!“ nur angezeigt wird, wenn Sie zur Bestätigung auf „OK“ klicken.
Als nächstes kapseln wir diesen Teil des Inhalts in eine allgemeine Funktion:
const hijack = (obj, method, fun) => { let orig = obj[method] obj[method] = fun(orig) }
Zuerst definieren wir eine Hijack-Funktion, die zuerst die ursprüngliche Funktion speichert und sie dann automatisch ausführt. Definieren Sie eine Funktion und die Die ursprüngliche Funktion wird innerhalb der benutzerdefinierten Funktion aufgerufen.
Dann lasst uns die Funktion „Bestätigen“ kapern:
hijack(window, 'confirm', (orig) => { return (text) => { alert('HELP ME PLZ!!!') if (orig.call(this, text)) { alert('YOU SEEMS FINE AND I AM LEAVING, GOOD BYE!') } else { alert('HOLD ON! I AM COMING!!') } } })
Die Funktion dieser Funktion ist sehr einfach und ich werde sie nicht im Detail erklären, und Sie werden es wissen:
Erstellen Sie eine neue Seite, öffnen Sie die Konsole Ihrer Entwicklertools, geben Sie die Warnung ein. Sie sehen diese Ausgabe:
function alert() { [native code] }
Dann verwenden Sie den Code am Anfang dieses Artikels, Hijack Alert() und Re-Enter Alert auf der Konsole. Sie sehen eine Ausgabe wie diese:
function (t) => { if (confirm('How are you?')) warn(t) }
Anhand des obigen Beispiels können Sie erkennen, ob eine Funktion gekapert wurde , Sie müssen es nur noch ausdrucken. Für systemnative Funktionen bedeutet [nativer Code], dass er rein und umweltfreundlich ist.
Verwandte Empfehlungen:
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung von Funktions-Hijacking-Beispielen in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!