

Arrays are great for lists, but most real-world data isn’t a simple list — it’s a collection of related details. A user has a name, an email, and an age. A product has a price, a category, and a stock count. That’s exactly what JavaScript objects are built for: grouping related data and behavior under one structure.
What Is an Object?
An object is a collection of key-value pairs, called properties:
const user = {
name: "Ada",
age: 29,
isActive: true,
};Unlike arrays, which are ordered by numeric index, objects are organized by named keys, which makes them ideal for representing real-world “things” with attributes.

Accessing and Updating Properties
console.log(user.name); // dot notation
console.log(user["age"]); // bracket notation
user.age = 30; // update
user.email = "ada@example.com"; // add a new property
delete user.isActive; // remove a propertyUse bracket notation when the property name is dynamic or stored in a variable — dot notation can’t do that.
Objects Can Hold Functions Too
A property that holds a function is called a method:
const user = {
name: "Ada",
greet() {
console.log(`Hi, I'm ${this.name}`);
},
};
user.greet(); // "Hi, I'm Ada"The this keyword inside a method refers to the object the method was called on.
READ ALSO:
JavaScript Array Methods Every Developer Should Know
Destructuring: A Cleaner Way to Extract Values
const { name, age } = user;
console.log(name, age); // "Ada" 30This pattern shows up constantly in modern JavaScript and frameworks like React, especially for pulling props or config values out of larger objects.
The Spread Operator: Copying and Merging Objects
const baseSettings = { theme: "dark", notifications: true };
const userSettings = { ...baseSettings, notifications: false };The spread operator copies all properties from one object into a new one. It’s the standard way to update settings or create a modified copy without changing the original.
An array of objects is the most common shape for real data you’ll work with — think of a list of users returned from an API. This is exactly where JavaScript array methods and objects meet.
Looping Through an Object
const scores = { math: 90, english: 85, science: 78 };
Object.entries(scores).forEach(([subject, score]) => {
console.log(`${subject}: ${score}`);
});Object.entries() is especially useful because it gives you both the key and value together, ready for destructuring in a loop.
Frequently Asked Questions
What’s the difference between an object and an array?
Objects store data as named key-value pairs, while arrays store ordered lists of items accessed by numeric index. In practice, the two are often combined as an array of objects.
How do I check if a property exists on an object?
Use the in operator or hasOwnProperty() — both are safer than comparing directly to undefined, since a property could legitimately be set to undefined.
Can I prevent an object from being changed?
Yes — Object.freeze() locks an object so its properties can’t be reassigned, which is useful for configuration values or constants.
Want to go deeper into modern JavaScript fundamentals? Explore more web development guides.