Heim >Web-Frontend >js-Tutorial >Wie durchläuft die „for...in'-Schleife von JavaScript Objekteigenschaften und wie kann ich geerbte Eigenschaften vermeiden?

Wie durchläuft die „for...in'-Schleife von JavaScript Objekteigenschaften und wie kann ich geerbte Eigenschaften vermeiden?

Susan Sarandon
Susan SarandonOriginal
2024-12-25 04:16:17195Durchsuche

How Does JavaScript's `for...in` Loop Iterate Through Object Properties and How Can I Avoid Inherited Properties?

Iterieren durch Objekteigenschaften

In JavaScript erfolgt das Iterieren durch die Eigenschaften eines Objekts häufig mithilfe einer for...in-Schleife. Es ist jedoch wichtig zu verstehen, wie diese Schleife funktioniert.

Bedenken Sie den folgenden Code:

var obj = {
    name: "Simon",
    age: "20",
    clothing: {
        style: "simple",
        hipster: false
    }
}

for(var propt in obj){
    console.log(propt + ': ' + obj[propt]);
}

Dieser Code protokolliert die Eigenschaften des obj-Objekts mithilfe der propt-Variablen. Aber woher weiß propt von diesen Eigenschaften?

Propt verstehen

Die propt-Variable ist eine temporäre Variable, die jeden Eigenschaftsschlüssel im obj-Objekt darstellt. Wenn die Schleife ausgeführt wird, durchläuft sie die Eigenschaften des Objekts und weist der Reihe nach jeden Eigenschaftsschlüssel propt zu.

Das liegt daran, dass die for...in-Schleife keine integrierte Methode oder Eigenschaft ist. Es handelt sich um ein Sprachkonstrukt, das die aufzählbaren Eigenschaften eines Objekts durchläuft.

Die hasOwnProperty()-Prüfung

Bei diesem Ansatz gibt es jedoch ein potenzielles Problem. Standardmäßig durchlaufen for...in-Schleifen auch geerbte Eigenschaften aus der Prototypenkette des Objekts. Um dies zu vermeiden, wird empfohlen, der Schleife eine hasOwnProperty()-Prüfung hinzuzufügen, wie zum Beispiel:

for (var prop in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, prop)) {
        // do stuff
    }
}

Diese Prüfung stellt sicher, dass nur Eigenschaften, die für das obj-Objekt spezifisch sind, in die Schleife einbezogen werden.

Alternativ kann die Methode hasOwnProperty() direkt am Objekt aufgerufen werden:

if (obj.hasOwnProperty(prop)) {
    // do stuff
}

Dieser Ansatz ist sicherer, insbesondere wenn Das Objekt enthält nicht verwandte Felder mit demselben Namen wie integrierte Eigenschaften.

Schlussfolgerung

Durch das Verständnis, wie die for...in-Schleife Objekteigenschaften durchläuft und wie Um geerbte Eigenschaften zu vermeiden, können Programmierer Objektdaten in JavaScript effektiv manipulieren.

Das obige ist der detaillierte Inhalt vonWie durchläuft die „for...in'-Schleife von JavaScript Objekteigenschaften und wie kann ich geerbte Eigenschaften vermeiden?. 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