Heim > Web-Frontend > js-Tutorial > Wie kann ich Array- und Objektprototypen sicher erweitern, ohne For-In-Schleifen zu unterbrechen?

Wie kann ich Array- und Objektprototypen sicher erweitern, ohne For-In-Schleifen zu unterbrechen?

Mary-Kate Olsen
Freigeben: 2024-12-09 13:40:15
Original
652 Leute haben es durchsucht

How Can I Safely Extend Array and Object Prototypes Without Breaking For-In Loops?

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
Nach dem Login kopieren

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
    }
});
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage