| chapter | 9 |
|---|---|
| description | Understanding the Dynamic Nature of Objects in JavaScript. |
JavaScript objects are dynamic, meaning their properties can be added, modified, or deleted at runtime. This flexibility allows for powerful and adaptable code but requires careful management to avoid unexpected behavior.
You can add properties to an object at any time using dot notation or bracket notation.
const person = {
firstName: "John",
lastName: "Doe"
};
// Adding a new property
person.age = 30;
console.log( person.age ); // Output: 30
// Adding a property using bracket notation
person["gender"] = "male";
console.log( person.gender ); // Output: maleExisting properties can be modified by reassigning their values.
const car = {
make: "Toyota",
model: "Corolla"
};
// Modifying a property
car.model = "Camry";
console.log( car.model ); // Output: CamryProperties can be removed from an object using the delete operator.
const book = {
title: "1984",
author: "George Orwell",
year: 1949
};
// Deleting a property
delete book.year;
console.log( book.year ); // Output: undefinedYou can check if an object has a specific property using the in operator or the hasOwnProperty method.
const user = {
username: "johndoe",
email: "john@example.com"
};
// Using the `in` operator
console.log( "email" in user ); // Output: true
// Using `hasOwnProperty` method
console.log( user.hasOwnProperty( "username" ) ); // Output: trueYou can iterate over an object's properties using a for...in loop.
const student = {
name: "Alice",
age: 22,
major: "Computer Science"
};
for (let key in student) {
if (student.hasOwnProperty( key )) {
console.log( `${key}: ${student[key]}` );
}
}
// Output:
// name: Alice
// age: 22
// major: Computer ScienceYou can use dynamic property names by using computed property names in object literals.
const propName = "score";
const game = {
[propName]: 100
};
console.log( game.score ); // Output: 100The dynamic nature of JavaScript objects provides great flexibility in managing data structures. You can add, modify, and delete properties at runtime, check for the existence of properties, and iterate over them. This flexibility, while powerful, requires careful handling to maintain code stability and predictability.