Hello code heroes! 🦸♀️🦸♂️
Today, we’re going to meet one of JavaScript’s hidden heroes: the for…in loop. Learning to traverse objects isn’t just a practical skill—it can also turn you into a “property detective” in the JS world. 🔍
In this post, we’ll cover everything from simple examples to creative mini-apps. Let’s dive in! 🎉
1️⃣ Objects and Properties: The Hidden Answers 🗝️
In JavaScript, objects are made up of key-value pairs. That means every property has a key and a value.
Example:
const car = {
brand: "Tesla",
model: "Model S",
year: 2025
};
brand→ Key"Tesla"→ Valuemodel→ Key"Model S"→ Valueyear→ Key2025→ Value
💡 Tip: Objects are like a “treasure chest of properties.” With the right tool (for…in), you can see everything inside.
2️⃣ Traversing Objects with for…in 🔄
The for…in loop iterates over an object’s enumerable properties and gives us the property key at each step.
Simple example:
for (let property in car) {
console.log("Property: " + property); // brand, model, year
console.log("Value: " + car[property]); // Tesla, Model S, 2025
}
Code Explanation:
- The variable
propertyholds the name of the property in each loop iteration. car[property]lets us access the value of that key.car.propertydoesn’t work becausepropertyis a variable, not the literal key name.
💡 Fun Note: It’s like opening a treasure chest—keys in hand, values at your fingertips!
3️⃣ for…in vs for…of: Avoid Confusion ⚔️
People often mix them up:
const numbers = [10, 20, 30];
// for...of
for (let num of numbers) {
console.log(num); // 10, 20, 30 ✅
}
// for...in
for (let index in numbers) {
console.log(index); // 0, 1, 2 (indexes) ✅
console.log(numbers[index]); // 10, 20, 30 ✅
}
Tip:
- Array = for…of
- Object = for…in
Caution: Using for…in on arrays can also return prototype properties, so it’s better suited for objects.
4️⃣ Mini Hero Profile with for…in 🌟
Let’s create a mini-game character profile and print all its properties using for…in:
const hero = {
name: "Lara Croft",
profession: "Archaeologist",
energy: 100,
weapon: "Pistol"
};
for (let property in hero) {
console.log(`${property.toUpperCase()}: ${hero[property]}`);
}
Output:
NAME: Lara Croft
PROFESSION: Archaeologist
ENERGY: 100
WEAPON: Pistol
Code Explanation:
toUpperCase()highlights the property names—looking cool 😎${property}: ${hero[property]}uses template literals for clean and readable output.
💡 Tip: This way, you can inspect all your character’s stats in one loop. Perfect for an RPG game! 🎮
5️⃣ Prototype Chain and hasOwnProperty() ⚠️
Watch out! The for…in loop doesn’t only iterate over your object’s own properties—it can also include properties from the prototype chain.
const animal = { type: "Cat" };
Object.prototype.age = 3;
for (let property in animal) {
console.log(property); // type and age
}
To see only the object’s own properties, use hasOwnProperty():
for (let property in animal) {
if (animal.hasOwnProperty(property)) {
console.log(property); // type ✅
}
}
💡 Tip: Checking the prototype chain is like using a magic filter in JavaScript. ✨
6️⃣ Arrays and for…in: The Traps 🕳️
Using for…in with arrays is generally not recommended:
const numbers = [10, 20, 30];
for (let i in numbers) {
console.log(i); // 0, 1, 2 ✅
console.log(numbers[i]); // 10, 20, 30 ✅
}
It works, but if prototype properties are added to the array, for…in will iterate over them too.
So, for arrays, for…of is safer.
7️⃣ Creative Example with for…in 🌈
Imagine we have a student’s grades and we want to print them with stars ⭐:
const student = {
math: 90,
physics: 85,
chemistry: 95
};
for (let subject in student) {
const grade = student[subject];
const stars = "*".repeat(Math.round(grade / 10));
console.log(`${subject.toUpperCase()}: ${stars} (${grade})`);
}
Output:
MATH: ********* (90)
PHYSICS: ******** (85)
CHEMISTRY: ********* (95)
💡 Explanation:
*.repeat() visualizes the grade with stars.- The code is fun, visual, and educational at the same time.
8️⃣ Summary and Code Hero Tips 🏁
for…initerates over all properties of an object.- Makes reading object data easy, but watch out for the prototype chain.
- Use
for…offor arrays. - Mini-games, RPG characters, or visualizations make JS learning fun.
💡 Life Tip:
“Exploring all properties of an object is like discovering hidden treasures.
for…inis your treasure map!” 🗺️✨

