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!