Heim  >  Artikel  >  Web-Frontend  >  Wie verwende ich eine for-in-Schleife in JavaScript? Worauf sollte ich achten?

Wie verwende ich eine for-in-Schleife in JavaScript? Worauf sollte ich achten?

伊谢尔伦
伊谢尔伦Original
2017-07-26 13:21:171738Durchsuche

Jeder weiß, dass JavaScript zwei Möglichkeiten bietet, Objekte zu iterieren:

(1)for-Schleife;
Es muss sein Es ist für jeden üblich, eine for-Schleife zu verwenden, um Array-Objekte zu iterieren. Bei der Verwendung von for..in-Schleifen sollte jedoch jeder darauf achten. Hören Sie mir alle zu ...
Javascript bietet eine spezielle Schleife (d. h. die for..in-Schleife), die zum Iterieren der Eigenschaften eines Objekts oder jedes Elements eines Arrays, for...in, verwendet wird Der Schleifenzähler in der Schleife ist eine Zeichenfolge, keine Zahl. Es enthält den Namen der aktuellen Eigenschaft oder den Index des aktuellen Array-Elements.
Fall 1:

//使用for..in循环遍历对象属性 
varperson={ 
name: "Admin", 
age: 21, 
address:"shandong" 
}; 
for(vari in person){ 
console.log(i); 
}
Das Ausführungsergebnis ist:

Name
Alter
Adresse
Beim Durchlaufen eines Objekts wird die Variable i, die der Schleifenzähler ist, ist der Objektattributname

//使用for..in循环遍历数组 
vararray = ["admin","manager","db"] 
for(vari in array){ 
console.log(i); 
}
Ausführungsergebnis:

0
1
2
Beim Durchlaufen eines Arrays ist die Variable i, die der Schleifenzähler ist, der Index des aktuellen Array-Elements
Fall 2:
Es scheint jedoch, dass die for..in-Schleife jetzt recht nützlich ist. Seien Sie jedoch nicht zu früh glücklich. Schauen Sie sich das folgende Beispiel an:

var array =["admin","manager","db"]; 
//给Array的原型添加一个name属性 
Array.prototype.name= "zhangsan"; 
for(var i in array){ 
alert(array[i]); 
}
Ergebnis ausführen:

admin
manager
db
zhangsan
Hey, es ist ein Wunder, wie kommt es, dass Zhangsan ohne Grund erscheint
Jetzt mal sehen Was passiert, wenn eine for-Schleife verwendet wird?

vararray = ["admin","manager","db"]; 
//给Array的原型添加一个name属性 
Array.prototype.name = "zhangsan"; 
for(var i =0 ; i<array.length; i++){ 
alert(array[i]); 
};
Ergebnis ausführen:

admin
manager
db
Oh, jetzt verstehe ich, dass die for..in-Schleife dem Prototyp eines bestimmten Typs Methoden hinzufügen wird Die Eigenschaften werden durchlaufen, sodass dies zu unerwarteten Fehlern in Ihrem Code führen kann. Um dieses Problem zu vermeiden, können wir die Methode hasOwnProperty() des Objekts verwenden, um dieses Problem zu vermeiden. Wenn die Eigenschaften oder Methoden des Objekts nicht geerbt sind, gibt die Methode hasOwnProperty() true zurück. Das heißt, die Prüfung betrifft hier keine Eigenschaften und Methoden, die von anderen Objekten geerbt wurden, sondern nur Eigenschaften, die direkt im jeweiligen Objekt selbst erstellt wurden.
Fall 3:

vararray = ["admin","manager","db"]; 
Array.prototype.name= "zhangshan"; 
for(vari in array){ 
//如果不是该对象自身直接创建的属性(也就是该属//性是原型中的属性),则跳过显示 
if(!array.hasOwnProperty(i)){ 
continue; 
} 
alert(array[i]); 
}
Laufergebnis:

admin
manager
db
Alles ist wieder intakt.

Das obige ist der detaillierte Inhalt vonWie verwende ich eine for-in-Schleife in JavaScript? Worauf sollte ich achten?. 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