Fresh object literals vs variable assignment behavior
📖 Scenario: Imagine you are managing a simple inventory system where you track items and their quantities. You want to understand how creating new objects directly differs from assigning existing objects to new variables.
🎯 Goal: You will create an object representing an item, then assign it to another variable. You will also create a fresh object literal with the same properties. Finally, you will compare how changing one affects the other.
📋 What You'll Learn
Create an object literal called item1 with properties name set to 'apple' and quantity set to 10.
Create a variable called item2 and assign it the value of item1.
Create a fresh object literal called item3 with the same properties as item1.
Change the quantity of item2 to 20.
Print the quantity of item1 and item3 to observe the difference.
💡 Why This Matters
🌍 Real World
Understanding object references is important when managing data in apps, like updating user profiles or inventory items without accidentally changing other data.
💼 Career
Many programming jobs require careful handling of objects and data structures to avoid bugs caused by unintended shared references.
Progress0 / 4 steps
1
Create the initial object literal
Create an object literal called item1 with properties name set to 'apple' and quantity set to 10.
Typescript
Hint
Use curly braces {} to create an object with the given properties.
2
Assign the object to a new variable
Create a variable called item2 and assign it the value of item1.
Typescript
Hint
Use = to assign item1 to item2.
3
Create a fresh object literal with the same properties
Create a fresh object literal called item3 with the same properties as item1: name set to 'apple' and quantity set to 10.
Typescript
Hint
Create a new object literal just like item1, but assign it to item3.
4
Change quantity and print results
Change the quantity of item2 to 20. Then print the quantity of item1 and item3 using console.log.
Typescript
Hint
Remember that item2 and item1 point to the same object, so changing one changes the other. item3 is a fresh object and stays unchanged.
Practice
(1/5)
1. In TypeScript, what happens when you assign an object variable to another variable using let b = a;?
easy
A. The original object is deleted.
B. A new copy of the object is created.
C. The object is converted to a string.
D. Both variables point to the same object in memory.
Solution
Step 1: Understand variable assignment with objects
Assigning one object variable to another copies the reference, not the object itself.
Step 2: Effect of reference copying
Both variables now point to the same object in memory, so changes via one affect the other.
Final Answer:
Both variables point to the same object in memory. -> Option D
Quick Check:
Object assignment copies reference = A [OK]
Hint: Assigning objects copies references, not objects themselves [OK]
Common Mistakes:
Thinking a new object is created on assignment
Assuming variables hold independent copies
Confusing object assignment with primitive assignment
2. Which of the following is the correct way to create a fresh object literal in TypeScript?
easy
A. let obj = obj2;
B. let obj = Object.assign({});
C. let obj = { name: 'Alice' };
D. let obj = new Object(obj2);
Solution
Step 1: Identify fresh object literal syntax
Using curly braces {} creates a new, fresh object literal.
Step 2: Check other options
let obj = Object.assign({}); is incorrect because Object.assign({}) needs a source object to copy from; let obj = obj2; copies reference; let obj = new Object(obj2); creates an object but with a reference or unexpected behavior.
Final Answer:
let obj = { name: 'Alice' }; -> Option C
Quick Check:
Fresh object literal uses {} = A [OK]
Hint: Use curly braces {} to create fresh objects [OK]
Common Mistakes:
Using assignment to copy objects instead of fresh literals
Misusing Object.assign without source
Confusing new Object() with fresh literal
3. What will be the output of this TypeScript code?
let a = { x: 1 };
let b = a;
b.x = 5;
console.log(a.x);
medium
A. 1
B. 5
C. undefined
D. Error
Solution
Step 1: Understand reference assignment
Variable b points to the same object as a.
Step 2: Modify property via b
Changing b.x to 5 changes the shared object property.
Step 3: Log a.x
Since a and b reference the same object, a.x is now 5.
Final Answer:
5 -> Option B
Quick Check:
Shared reference means change visible = B [OK]
Hint: Changing one reference changes all pointing to same object [OK]
Common Mistakes:
Expecting original object to remain unchanged
Confusing object copying with reference assignment
Assuming primitive copy behavior for objects
4. Identify the bug in this TypeScript code snippet:
let obj1 = { val: 10 };
let obj2 = obj1;
obj2 = { val: 20 };
console.log(obj1.val);
medium
A. obj2 assignment creates a new object, obj1 remains unchanged.
B. Both obj1 and obj2 point to the new object.
C. Syntax error due to reassignment.
D. obj1.val will be 20, which is unexpected.
Solution
Step 1: Analyze initial assignment
obj2 initially points to the same object as obj1.
Step 2: Reassign obj2 to a new object
obj2 now points to a fresh object; obj1 still points to the original.
Step 3: Check console output
obj1.val remains 10 because obj1's reference did not change.
Final Answer:
obj2 assignment creates a new object, obj1 remains unchanged. -> Option A
Quick Check:
Reassignment changes reference, original unaffected = D [OK]
Hint: Reassigning variable changes reference, original object stays same [OK]
Common Mistakes:
Thinking obj1 changes when obj2 is reassigned
Confusing property change with variable reassignment
Expecting both variables to point to new object
5. You want to create two independent objects in TypeScript so that changing one does not affect the other. Which code snippet achieves this correctly?