


Ausführliche Erläuterung des JavaScript-Ereignis-Proxys und der Verwendung der Proxy-Instanz
JavaScript Event Proxy
Event-Proxys sind eine sehr nützliche und interessante Funktion in der JS-Welt. Wenn wir vielen Elementen Ereignisse hinzufügen müssen, können wir die Handler-Funktion auslösen, indem wir das Ereignis zu ihrem übergeordneten Knoten hinzufügen und das Ereignis an den übergeordneten Knoten delegieren.
Dies ist hauptsächlich auf den Event-Bubbling-Mechanismus des Browsers zurückzuführen. Lassen Sie uns ein konkretes Beispiel geben, um die Verwendung dieser Funktion zu erläutern.
Dieses Beispiel stammt hauptsächlich aus David Walshs verwandtem Artikel (How JavaScript Event Delegation Works).
Angenommen, es gibt einen übergeordneten Knoten von UL, der viele untergeordnete Knoten von Li enthält:
<ul id="list"> <li id="li-1">Li 1</li> <li id="li-2">Li 2</li> <li id="li-3">Li 3</li> <li id="li-4">Li 4</li> <li id="li-5">Li 5</li> </ul>
Wenn sich unsere Maus manchmal über Li bewegt, passiert es Es ist erforderlich, die relevanten Informationen dieses Li abzurufen und das schwebende Fenster zur Anzeige detaillierter Informationen aufzurufen. Wenn ein Li angeklickt wird, muss das entsprechende Verarbeitungsereignis ausgelöst werden.
Unsere übliche Schreibweise besteht darin, jedem Li einige Ereignis-Listener wie onMouseOver oder onClick hinzuzufügen.
function addListenersLi(liElement) { liElement.onclick = function clickHandler() { //TODO }; liElement.onmouseover = function mouseOverHandler() { //TODO } } window.onload = function() { var ulElement = document.getElementById("list"); var liElements = ulElement.getElementByTagName("Li"); for (var i = liElements.length - 1; i >= 0; i--) { addListenersLi(liElements[i]); } }
Wenn die Li-Unterelemente in diesem UL häufig hinzugefügt oder gelöscht werden, müssen wir jedes Mal, wenn Li hinzugefügt wird, die Methode addListenersLi aufrufen Handler-Funktion für jeden Li-Knoten.
Dadurch wird der Vorgang zum Hinzufügen oder Löschen komplex und es besteht die Möglichkeit von Fehlern.
Die Lösung des Problems besteht darin, den Ereignis-Proxy-Mechanismus zu verwenden. Wenn das Ereignis an den oberen übergeordneten Knoten geworfen wird, ermitteln und erhalten wir die Ereignisquelle Li, indem wir das Zielobjekt (Ziel) des Ereignisses überprüfen.
Der folgende Code kann den gewünschten Effekt erzielen:
/ 获取父节点,并为它添加一个click事件 document.getElementById("list").addEventListener("click",function(e) { // 检查事件源e.targe是否为Li if(e.target && e.target.nodeName.toUpperCase == "LI") { // //TODO console.log("List item ",e.target.id," was clicked!"); } });
Wenn auf den untergeordneten Knoten geklickt wird, wird der Das Click-Ereignis wird ausgehend von den untergeordneten Knoten nach oben sprudeln. Nachdem der übergeordnete Knoten das Ereignis erfasst hat, bestimmt er anhand von e.target.nodeName, ob es sich um den Knoten handelt, den wir verarbeiten müssen. Und erhalten Sie den angeklickten Li-Knoten über e.target. Auf diese Weise können die entsprechenden Informationen gewonnen und verarbeitet werden.
Die Delegatfunktion in jQuery und Dojo
Sehen wir uns an, wie die in Dojo und jQuery bereitgestellte Ereignis-Proxy-Schnittstelle verwendet wird.
jQuery:
$("#list").delegate("li", "click", function(){ // "$(this)" is the node that was clicked console.log("you clicked a link!",$(this)); });
Die Delegate-Methode von jQuery erfordert drei Parameter, einen Selektor, einen Zeitnamen und einen Ereignishandler.
Dojo ähnelt jQuery, der einzige Unterschied besteht im Programmierstil der beiden:
require(["dojo/query","dojox/NodeList/delegate"], function(query,delegate){ query("#list").delegate("li","onclick",function(event) { // "this.node" is the node that was clicked console.log("you clicked a link!",this); }); })
Dojos Delegate-Modul befindet sich in dojox.NodeList Die bereitgestellte Schnittstelle ist dieselbe wie bei jQuery und die Parameter sind ebenfalls dieselben.
Durch die Delegation können Sie mehrere Vorteile der Verwendung der Ereignisdelegation für die Entwicklung nutzen:
1. Es müssen weniger Funktionen verwaltet werden. Es ist nicht erforderlich, für jedes Element eine Listener-Funktion hinzuzufügen. Für ähnliche untergeordnete Elemente unter demselben übergeordneten Knoten können Ereignisse behandelt werden, indem sie an die Überwachungsfunktion des übergeordneten Elements delegiert werden.
2. Sie können Elemente problemlos dynamisch hinzufügen und ändern, und es ist nicht erforderlich, Ereignisbindungen aufgrund von Änderungen an Elementen zu ändern.
3. Es gibt weniger Verbindungen zwischen JavaScript- und DOM-Knoten, was die Wahrscheinlichkeit von Speicherlecks durch Zirkelverweise verringert.
Verwendung von Proxys in der JavaScript-Programmierung
Oben wird beschrieben, wie Sie den Browser-Bubbling-Mechanismus verwenden, um bei der Verarbeitung von DOM-Ereignissen Ereignis-Proxys zu DOM-Elementen hinzuzufügen. Tatsächlich können wir in der reinen JS-Programmierung dieses Programmiermodell auch verwenden, um Proxy-Objekte zum Betreiben von Zielobjekten zu erstellen
var delegate = function(client, clientMethod) { return function() { return clientMethod.apply(client, arguments); } } var Apple= function() { var _color = "red"; return { getColor: function() { console.log("Color: " + _color); }, setColor: function(color) { _color = color; } }; }; var a = new Apple(); var b = new Apple(); a.getColor(); a.setColor("green"); a.getColor(); //调用代理 var d = delegate(a, a.setColor); d("blue"); //执行代理 a.getColor(); //b.getColor();
Im obigen Beispiel durch Aufrufen von The Die Funktion „delegate()“ erstellt eine Proxy-Funktion d, um die Änderung von a durchzuführen.
Obwohl diese Methode die Übertragung des aufrufenden Objekts mithilfe von „Anwenden“ realisiert, verbirgt sie bestimmte Objekte vor dem Programmiermodus und kann den zufälligen Zugriff auf diese Objekte verhindern.
Das Konzept der Delegation wird in vielen Frameworks verwendet, um den laufenden Umfang von Methoden festzulegen.
Typische sind dojo.hitch(scope, method) und createDelegate(obj, args) von ExtJS.
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung des JavaScript-Ereignis-Proxys und der Verwendung der Proxy-Instanz. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Verwendung von MDF- und MDS-Dateien Dank der kontinuierlichen Weiterentwicklung der Computertechnologie können wir Daten auf vielfältige Weise speichern und teilen. Im Bereich digitaler Medien stoßen wir häufig auf spezielle Dateiformate. In diesem Artikel besprechen wir ein gängiges Dateiformat – MDF- und MDS-Dateien – und stellen deren Verwendung vor. Zuerst müssen wir die Bedeutung von MDF-Dateien und MDS-Dateien verstehen. mdf ist die Erweiterung der CD/DVD-Imagedatei und die mds-Datei ist die Metadatendatei der mdf-Datei.

CrystalDiskMark ist ein kleines HDD-Benchmark-Tool für Festplatten, das schnell sequentielle und zufällige Lese-/Schreibgeschwindigkeiten misst. Lassen Sie sich als Nächstes vom Redakteur CrystalDiskMark und die Verwendung von CrystalDiskMark vorstellen ). Zufällige I/O-Leistung. Es ist eine kostenlose Windows-Anwendung und bietet eine benutzerfreundliche Oberfläche und verschiedene Testmodi zur Bewertung verschiedener Aspekte der Festplattenleistung. Sie wird häufig in Hardware-Reviews verwendet

foobar2000 ist eine Software, die Ihnen jederzeit Musik aller Art mit verlustfreier Klangqualität bietet Spielen Sie das erweiterte Audio auf dem Computer ab, um ein bequemeres und effizienteres Musikwiedergabeerlebnis zu ermöglichen. Das Interface-Design ist einfach, klar und benutzerfreundlich. Es nimmt einen minimalistischen Designstil an, ohne übermäßige Dekoration Es unterstützt außerdem eine Vielzahl von Skins und Themes, personalisiert Einstellungen nach Ihren eigenen Vorlieben und erstellt einen exklusiven Musikplayer, der die Wiedergabe mehrerer Audioformate unterstützt. Außerdem unterstützt es die Audio-Gain-Funktion zum Anpassen der Lautstärke Passen Sie die Lautstärke entsprechend Ihrem Hörzustand an, um Hörschäden durch zu hohe Lautstärke zu vermeiden. Als nächstes lass mich dir helfen

Cloud-Speicher sind heutzutage aus unserem täglichen Leben und Arbeiten nicht mehr wegzudenken. Als einer der führenden Cloud-Speicherdienste in China hat Baidu Netdisk mit seinen leistungsstarken Speicherfunktionen, der effizienten Übertragungsgeschwindigkeit und dem komfortablen Bedienerlebnis die Gunst einer großen Anzahl von Benutzern gewonnen. Und egal, ob Sie wichtige Dateien sichern, Informationen teilen, Videos online ansehen oder Musik hören möchten, Baidu Cloud Disk kann Ihre Anforderungen erfüllen. Viele Benutzer verstehen jedoch möglicherweise nicht die spezifische Verwendung der Baidu Netdisk-App. Dieses Tutorial führt Sie daher im Detail in die Verwendung der Baidu Netdisk-App ein. Wenn Sie immer noch verwirrt sind, folgen Sie bitte diesem Artikel, um mehr im Detail zu erfahren. So verwenden Sie Baidu Cloud Network Disk: 1. Installation Wählen Sie beim Herunterladen und Installieren der Baidu Cloud-Software zunächst die benutzerdefinierte Installationsoption aus.

NetEase Mailbox ist eine von chinesischen Internetnutzern weit verbreitete E-Mail-Adresse und hat mit seinen stabilen und effizienten Diensten schon immer das Vertrauen der Benutzer gewonnen. NetEase Mailbox Master ist eine E-Mail-Software, die speziell für Mobiltelefonbenutzer entwickelt wurde. Sie vereinfacht das Senden und Empfangen von E-Mails erheblich und macht unsere E-Mail-Verarbeitung komfortabler. Wie Sie NetEase Mailbox Master verwenden und welche spezifischen Funktionen es bietet, wird Ihnen der Herausgeber dieser Website im Folgenden ausführlich vorstellen und hofft, Ihnen weiterzuhelfen! Zunächst können Sie die NetEase Mailbox Master-App im Mobile App Store suchen und herunterladen. Suchen Sie im App Store oder im Baidu Mobile Assistant nach „NetEase Mailbox Master“ und befolgen Sie dann die Anweisungen zur Installation. Nachdem der Download und die Installation abgeschlossen sind, öffnen wir das NetEase-E-Mail-Konto und melden uns an. Die Anmeldeschnittstelle ist wie unten dargestellt

Nachdem Sie lange auf die Wiedergabetaste des Lautsprechers gedrückt haben, stellen Sie in der Software eine WLAN-Verbindung her und schon können Sie ihn verwenden. Tutorial Anwendbares Modell: Xiaomi 12 System: EMUI11.0 Version: Xiaoai Classmate 2.4.21 Analyse 1 Suchen Sie zunächst die Wiedergabetaste des Lautsprechers und halten Sie sie gedrückt, um in den Netzwerkverteilungsmodus zu gelangen. 2 Melden Sie sich in der Xiaoai Speaker-Software auf Ihrem Telefon bei Ihrem Xiaomi-Konto an und klicken Sie, um einen neuen Xiaoai Speaker hinzuzufügen. 3. Nachdem Sie den Namen und das Passwort des WLAN eingegeben haben, können Sie Xiao Ai anrufen, um es zu verwenden. Ergänzung: Welche Funktionen hat Xiaoai Speaker? 1 Xiaoai Speaker verfügt über Systemfunktionen, soziale Funktionen, Unterhaltungsfunktionen, Wissensfunktionen, Smart Home und Trainingspläne. Zusammenfassung/Hinweise: Für eine einfache Verbindung und Nutzung muss die Xiao Ai App vorab auf Ihrem Mobiltelefon installiert werden.

Die Technologie zur Gesichtserkennung und -erkennung ist bereits eine relativ ausgereifte und weit verbreitete Technologie. Derzeit ist JS die am weitesten verbreitete Internetanwendungssprache. Die Implementierung der Gesichtserkennung und -erkennung im Web-Frontend hat im Vergleich zur Back-End-Gesichtserkennung Vor- und Nachteile. Zu den Vorteilen gehören die Reduzierung der Netzwerkinteraktion und die Echtzeiterkennung, was die Wartezeit des Benutzers erheblich verkürzt und das Benutzererlebnis verbessert. Die Nachteile sind: Es ist durch die Größe des Modells begrenzt und auch die Genauigkeit ist begrenzt. Wie implementiert man mit js die Gesichtserkennung im Web? Um die Gesichtserkennung im Web zu implementieren, müssen Sie mit verwandten Programmiersprachen und -technologien wie JavaScript, HTML, CSS, WebRTC usw. vertraut sein. Gleichzeitig müssen Sie auch relevante Technologien für Computer Vision und künstliche Intelligenz beherrschen. Dies ist aufgrund des Designs der Webseite erwähnenswert

Apple hat am Dienstag das iOS 17.4-Update veröffentlicht, das eine Reihe neuer Funktionen und Korrekturen für iPhones bringt. Das Update enthält neue Emojis und EU-Nutzer können diese auch aus anderen App-Stores herunterladen. Darüber hinaus stärkt das Update auch die Kontrolle der iPhone-Sicherheit und führt weitere Einstellungsoptionen für den „Schutz gestohlener Geräte“ ein, um Benutzern mehr Auswahl und Schutz zu bieten. „iOS17.3 führt zum ersten Mal die Funktion „Schutz vor gestohlenen Geräten“ ein, die den vertraulichen Informationen der Benutzer zusätzliche Sicherheit verleiht. Wenn der Benutzer nicht zu Hause oder an anderen vertrauten Orten ist, erfordert diese Funktion, dass der Benutzer zum ersten Mal biometrische Informationen eingibt Zeit und nach einer Stunde müssen Sie Informationen erneut eingeben, um auf bestimmte Daten zuzugreifen und diese zu ändern, z. B. um Ihr Apple-ID-Passwort zu ändern oder den Schutz vor gestohlenen Geräten zu deaktivieren.
