Heim > Web-Frontend > js-Tutorial > Wie kann ich mit „for...in' sicher über Objekteigenschaften in JavaScript iterieren?

Wie kann ich mit „for...in' sicher über Objekteigenschaften in JavaScript iterieren?

Linda Hamilton
Freigeben: 2024-12-29 20:37:18
Original
197 Leute haben es durchsucht

How Can I Safely Iterate Over Object Properties in JavaScript Using `for...in`?

Objekteigenschaften mit for...in iterieren

Beim Durchlaufen von Objekteigenschaften mit der for...in-Schleife die Schleifenvariable propt stellt den Schlüssel der Eigenschaft dar, auf die zugegriffen wird. Es handelt sich jedoch nicht um eine integrierte Methode oder Eigenschaft für Objekte.

Die for...in-Schleife ruft sowohl Eigenschaften vom Objekt selbst als auch von seinem Prototyp geerbte Eigenschaften ab. Dies kann problematisch sein, da geerbte Eigenschaften möglicherweise nicht in die Iteration einbezogen werden sollen.

Verwendung von hasOwnProperty für eine genaue Iteration

Um dieses Problem zu umgehen, können Sie hinzufügen eine hasOwnProperty-Prüfung innerhalb der for...in-Schleife:

for (var prop in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, prop)) {
        // Do stuff
    }
}
Nach dem Login kopieren

Die hasOwnProperty-Methode Prüft, ob eine Eigenschaft direkt im Objekt definiert ist und nicht von seinem Prototyp geerbt wurde. Mithilfe dieser Prüfung können Sie geerbte Eigenschaften von der Iteration ausschließen.

hasOwnProperty vs. Aufruf über das Objekt

Alternativ können Sie hasOwnProperty über das Objekt selbst aufrufen:

if (obj.hasOwnProperty(prop)) {
    // Do stuff
}
Nach dem Login kopieren

Dies kann jedoch fehlschlagen, wenn das Objekt ein unabhängiges Feld mit demselben Namen wie hat hasOwnProperty, wie zum Beispiel:

var obj = { foo: 42, hasOwnProperty: 'lol' };
obj.hasOwnProperty('foo'); // TypeError
Nach dem Login kopieren

Um dieses Problem zu vermeiden, ist es sicherer, stattdessen hasOwnProperty über Object.prototype aufzurufen:

Object.prototype.hasOwnProperty.call(obj, 'foo'); // True
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich mit „for...in' sicher über Objekteigenschaften in JavaScript iterieren?. 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