JavaScript中的for-in循环用于迭代对象的属性。如果我们要显示对象的内容, 它可能是一个很棒的调试工具。 for-in循环仅在其可枚举属性设置为" true"的对象的那些键上进行迭代。对象中的键值具有四个属性(值, 可写, 可枚举, 可配置)。设置为" true"时可枚举意味着我们可以迭代该属性。你可以在以下内容的属性属性部分中了解有关四个关键属性的信息:JavaScript中的对象。阅读更多有关枚举的信息JavaScript中的可枚举属性.
要点:
- 使用换循环遍历非数组对象。即使我们可以使用换为数组循环, 通常不建议这样做。而是使用对于循环遍历数组。
- 迭代的属性换循环还包括位于原型链.
- 属性的迭代顺序可能与对象中定义的属性不匹配。
语法如下:
for (let i in obj1) {
// Prints all the keys in
// obj1 on the console
console.log(i);
}
例子:
<script>
const courses = {
// Declaring a courses object
firstCourse: "C++ STL" , secondCourse: "DSA Self Paced" , thirdCourse: "CS Core Subjects"
};
// Creating a new empty object with
// prototype set to courses object
const student1 = Object.create(courses);
// Defining student1 properties and methods
student1.id = 123;
student1.firstName = "Prakhar" ;
student1.showEnrolledCourses = function () {
console.log(courses);
}
// Iterating over all properties of
// student1 object
for (let prop in student1) {
console.log(prop + " -> "
+ student1[prop]);
}
</script>
控制台输出:
换入
循环迭代对象的属性及其原型链的属性。
如果我们只想显示" student1"对象的属性, 而该对象仅属于该对象而不是原型链, 则可以使用" if"检查
hasOwnProperty()方法
.
<script>
// Iterating over only those properties
// of student 1 object which is not on
// its prototype chain
for (let prop in student1) {
if (student1.hasOwnProperty(prop)) {
console.log(prop + " -> "
+ student1[prop]);
}
}
</script>
控制台输出:
与for循环hasOwnProperty检查, 遍历对象的属性。