Dieses unkonventionelle Codefragment, bei dem ein leeres Array vor der forEach-Methode steht, hat Entwickler vor ein Rätsel gestellt . Schauen wir uns genauer an, wie es funktioniert.
Das leere Array dient einem besonderen Zweck: Es bietet Zugriff auf Array-Prototypen wie .forEach. Durch die direkte Verwendung eines Arrays erhalten Sie diese Funktionalität, ohne dass Array.prototype.forEach.call(...); explizit geschrieben werden muss.
forEach ist eine Funktion, die übernimmt eine andere Funktion als Eingabe. Für jedes Element in einem Array-ähnlichen Objekt (z. B. einer Knotenliste) werden drei Argumente übergeben:
Mit der .call-Methode können Sie eine Funktion mit einem bestimmten Kontext aufrufen. In diesem Fall überschreibt es die Funktion der inneren Funktion mit der Knotenliste und stellt so sicher, dass die Funktion über den Index auf Elemente zugreifen kann.
Bedenken Sie Folgendes:
[1,2,3].forEach.call( document.querySelectorAll('a'), function(el) { /* logic */ });
Dieser Code verwendet das leere Array, um auf den .forEach-Prototyp zuzugreifen, übergibt die Knotenliste an forEach und iteriert über jedes Tag, der Zugriff auf das Element, seinen Index und die gesamte Knotenliste bietet.
Während einige argumentieren, dass die Verwendung dieser Technik im Vergleich zur manuellen Schleife unelegant ist, dient sie doch ein Zweck, wenn Sie die Außenwelt (z. B. DOM) mehrmals ändern müssen, während Sie auf Element- oder Indexinformationen zugreifen.
In modernen JavaScript-Versionen und mit Tools wie Babel, Sie können die Operatoren ... rest und spread verwenden, um ähnliche Funktionen sauberer zu erreichen. Die Grundprinzipien der Verwendung eines leeren Arrays für den Zugriff auf Array-Prototypen und der Änderung dieses Kontexts mit .call bleiben jedoch relevant.
Das obige ist der detaillierte Inhalt vonWarum ein leeres Array mit „.forEach.call()' in JavaScript verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!