Array- und Objektprototypen erweitern, ohne For-In-Schleifen zu überladen
Beim Erweitern von Array.prototype und Object.prototype mit Hilfsmethoden ist dies der Fall Dies ist von entscheidender Bedeutung, um sicherzustellen, dass diese Methoden For-In-Schleifen nicht beeinträchtigen, indem sie als Werte erscheinen. Dies ist besonders wichtig in Szenarien, in denen anderer Code nur für den Zugriff auf Werte auf For-In-Schleifen angewiesen ist.
For-In-Schleifen mit Arrays vermeiden
Die ideale Lösung ist: Vermeiden Sie die Verwendung von For-In-Schleifen mit Arrays. Verwenden Sie stattdessen arrayspezifische Iterationsmethoden wie die integrierte .map() und .filter(). Vermeiden Sie For-In-Schleifen in generischen Funktionen, die sowohl auf Arrays als auch auf Objekte stoßen können.
Verwenden Sie hasOwnProperty() mit Objekten
Wenn die Verwendung von For-In-Schleifen in generischen Funktionen unvermeidbar ist Funktionen verwenden Sie die Methode hasOwnProperty(), um von geerbte Eigenschaften auszuschließen Prototyp:
for (var prop in anyObj) if (Object.prototype.hasOwnProperty.call(anyObj, prop)) // do something
Nicht aufzählbare Eigenschaften in ECMAScript 5.1
In ECMAScript 5.1 können Sie Eigenschaften mithilfe von Object.defineProperty() so festlegen, dass sie nicht aufzählbar sind:
Object.defineProperty(Array.prototype, "find", { enumerable: false, writable: true, value: function(testFun) { // code to find element in array } });
Dadurch wird sichergestellt, dass die Methode „find“ nicht in for-in erscheint Schleifen. Es ist jedoch wichtig zu beachten, dass dieser Ansatz in älteren Browsern nicht unterstützt wird. Erwägen Sie aus Kompatibilitätsgründen die Verwendung von Unterlegscheiben wie ES5-shim.
Das obige ist der detaillierte Inhalt vonWie kann ich Array- und Objektprototypen sicher erweitern, ohne For-In-Schleifen zu unterbrechen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!