Zugriff auf Prototypmethoden, ohne Iteratoren zu behindern
Während die Erweiterung von Array.prototype und Object.prototype mit Hilfsmethoden gängige Praxis ist, tauchen diese Methoden häufig auf während For-In-Schleifen, was möglicherweise Probleme verursachen kann. Um dies zu vermeiden, können Entwickler verhindern, dass die Methoden in solchen Schleifen angezeigt werden, indem sie sie als nicht aufzählbar festlegen.
Lösung: Nicht aufzählbare Eigenschaften
EcmaScript 5.1 wird eingeführt die Methode Object.defineProperty(), mit der nicht aufzählbare Eigenschaften definiert werden können. Durch die Verwendung dieser Methode können Entwickler das aufzählbare Attribut der Methode auf „false“ setzen, wodurch sie für For-in-Schleifen unsichtbar wird.
Das folgende Beispiel zeigt, wie eine nicht aufzählbare Methode namens „find“ auf der definiert wird Array.prototype:
Object.defineProperty(Array.prototype, "find", { enumerable: false, writable: true, value: function(testFun) { // Code to find element in the array } });
Mit dieser Definition kann die Find-Methode wie vorgesehen verwendet werden, sie erscheint jedoch nicht in For-In-Schleifen, wodurch sichergestellt wird, dass die Schleife nur iteriert über die tatsächlichen Array-Werte.
Hinweis: Diese Lösung wird in älteren Browsern, die EcmaScript 5.1 nicht unterstützen, nicht unterstützt. Für diese Browser können Entwickler eine Shim-Bibliothek wie es5-shims verwenden, um Kompatibilität sicherzustellen. Darüber hinaus kann die forEach()-Methode, die in modernen Browsern verfügbar ist, als Alternative zu for-in-Schleifen zum Durchlaufen von Arrays verwendet werden, ohne auf Prototypmethoden zu stoßen.
Das obige ist der detaillierte Inhalt vonWie kann ich Prototypmethoden zu Arrays und Objekten hinzufügen, ohne die „for...in'-Schleifen zu beeinträchtigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!