Bird
Raised Fist0
Javascriptprogramming~10 mins

Nested objects in Javascript - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Nested objects
Start
↓
Create outer object
↓
Add inner object as property
↓
Access or modify inner object property
↓
Use nested values
↓
End
This flow shows how we create an object that contains another object inside it, then access or change the inner object's properties.
Execution Sample
Javascript
const person = {
  name: "Alice",
  address: {
    city: "Wonderland",
    zip: 12345
  }
};
console.log(person.address.city);
This code creates a person object with a nested address object, then prints the city inside the address.
Execution Table
StepActionObject StateOutput
1Create person object with name and address properties{"name":"Alice","address":{"city":"Wonderland","zip":12345}}
2Access person.address.city{"name":"Alice","address":{"city":"Wonderland","zip":12345}}"Wonderland"
3Print city value{"name":"Alice","address":{"city":"Wonderland","zip":12345}}Wonderland
4End of code execution{"name":"Alice","address":{"city":"Wonderland","zip":12345}}
💡 Code ends after printing the nested city value.
Variable Tracker
VariableStartAfter Step 1After Step 2Final
personundefined{"name":"Alice","address":{"city":"Wonderland","zip":12345}}{"name":"Alice","address":{"city":"Wonderland","zip":12345}}{"name":"Alice","address":{"city":"Wonderland","zip":12345}}
person.address.cityundefined"Wonderland""Wonderland""Wonderland"
Key Moments - 2 Insights
Why do we write person.address.city instead of just person.city?
Because city is inside the nested address object, not directly inside person. See execution_table step 2 where we access person.address.city.
Can we change the city value directly inside the nested object?
Yes, by assigning a new value to person.address.city. The nested object is just like any other object property. This is implied by the structure in execution_table step 1.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 2, what is the value of person.address.city?
A12345
B"Alice"
C"Wonderland"
Dundefined
💡 Hint
Check the Output column at step 2 in the execution_table.
At which step does the code print the city name?
AStep 1
BStep 3
CStep 2
DStep 4
💡 Hint
Look for the step where Output shows the printed value.
If we add a new property person.address.street, where would it appear in variable_tracker?
AAs a new variable row with initial undefined and updated values
BInside person variable only
CIt would not appear in variable_tracker
DAs a new top-level variable
💡 Hint
Nested properties are tracked separately as seen with person.address.city in variable_tracker.
Concept Snapshot
Nested objects store objects inside other objects.
Access nested properties with dot notation: outer.inner.property.
You can read or change nested values like normal properties.
Useful for grouping related data inside one object.
Example: person.address.city accesses city inside address.
Full Transcript
We start by creating an object named person. This object has two properties: name and address. The address itself is another object with city and zip properties. When we access person.address.city, we go inside the person object to the address object, then get the city value. The code prints 'Wonderland' which is the city inside the nested address object. This shows how nested objects let us organize data inside other data. We can read or change nested properties using dot notation step by step.

Practice

(1/5)
1. What is a nested object in JavaScript?
easy
A. An array inside an object
B. An object inside another object
C. A function inside an object
D. A string inside an object

Solution

  1. Step 1: Understand object structure

    An object can hold many types of values, including other objects.
  2. Step 2: Define nested object

    A nested object means one object is stored as a value inside another object.
  3. Final Answer:

    An object inside another object -> Option B
  4. Quick Check:

    Nested object = object inside object [OK]
Hint: Nested means inside another object, like boxes in boxes [OK]
Common Mistakes:
  • Thinking nested means array inside object
  • Confusing functions with objects
  • Assuming nested means string inside object
2. Which of the following is the correct syntax to access the value 42 in this nested object?
const data = { info: { age: 42 } };
easy
A. data.info.age
B. data[info][age]
C. data['info'.'age']
D. data.info['age']()

Solution

  1. Step 1: Access nested keys with dot notation

    Use dot notation to access nested object properties: data.info.age.
  2. Step 2: Check syntax correctness

    data[info][age] is wrong because keys must be strings or variables; data['info'.'age'] is invalid syntax; data.info['age']() tries to call a value as function.
  3. Final Answer:

    data.info.age -> Option A
  4. Quick Check:

    Dot notation for nested keys = data.info.age [OK]
Hint: Use dot notation for nested keys like data.key1.key2 [OK]
Common Mistakes:
  • Using brackets without quotes for keys
  • Trying to call a property as a function
  • Incorrect string concatenation in keys
3. What will be the output of this code?
const user = { name: 'Alice', contact: { email: 'alice@example.com', phone: '1234' } };
console.log(user.contact.email);
medium
A. 'alice@example.com'
B. '1234'
C. 'contact'
D. undefined

Solution

  1. Step 1: Identify nested property access

    user.contact.email accesses the 'email' property inside the 'contact' object.
  2. Step 2: Check the value of user.contact.email

    The value is the string 'alice@example.com'.
  3. Final Answer:

    'alice@example.com' -> Option A
  4. Quick Check:

    Access nested email = 'alice@example.com' [OK]
Hint: Follow the chain: object.property.property to get nested value [OK]
Common Mistakes:
  • Accessing wrong property like user.email
  • Using wrong quotes causing syntax error
  • Expecting phone instead of email
4. Find the error in this code snippet:
const book = { title: 'JS Guide', author: { firstName: 'John', lastName: 'Doe' } };
console.log(book.author.firstName());
medium
A. Incorrect object declaration
B. Missing semicolon after object
C. firstName is not a function
D. author property does not exist

Solution

  1. Step 1: Check property type

    book.author.firstName is a string, not a function.
  2. Step 2: Identify the error in calling it

    Using parentheses () tries to call it as a function, causing a TypeError.
  3. Final Answer:

    firstName is not a function -> Option C
  4. Quick Check:

    Calling string as function causes error [OK]
Hint: Don't add () after properties unless they are functions [OK]
Common Mistakes:
  • Calling string property as function
  • Ignoring error message
  • Assuming missing semicolon causes error
5. Given this nested object:
const company = {
  name: 'TechCorp',
  departments: {
    sales: { employees: 10 },
    development: { employees: 25 },
    hr: { employees: 5 }
  }
};

// How to get total employees in all departments?

Which code correctly calculates total employees?
hard
A. company.departments.sales + company.departments.development + company.departments.hr
B. company.departments.employees.sales + company.departments.employees.development + company.departments.employees.hr
C. company.departments['employees'].sales + company.departments['employees'].development + company.departments['employees'].hr
D. company.departments.sales.employees + company.departments.development.employees + company.departments.hr.employees

Solution

  1. Step 1: Understand object structure

    Each department is an object inside company.departments, with an employees property holding a number.
  2. Step 2: Access employees count correctly

    Access employees by chaining: company.departments.sales.employees, etc., then add them.
  3. Step 3: Check incorrect options

    Adding the department objects directly (like company.departments.sales) leads to summing objects instead of numbers; accessing employees as a property of departments fails because it doesn't exist on departments--each department has its own.
  4. Final Answer:

    company.departments.sales.employees + company.departments.development.employees + company.departments.hr.employees -> Option D
  5. Quick Check:

    Sum employees by chaining keys correctly [OK]
Hint: Add numbers by chaining keys: obj.key1.key2 + obj.key3.key4 [OK]
Common Mistakes:
  • Adding objects instead of numbers
  • Wrong property order
  • Using wrong key names
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard