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
Linda HamiltonOriginal
2024-12-29 20:37:18200Durchsuche

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
    }
}

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
}

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

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

Object.prototype.hasOwnProperty.call(obj, 'foo'); // True

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!

Stellungnahme:
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