What is the difference between Object.create() and Object.assign()?
Assesses fundamental understanding of JavaScript conventions, runtime behavior, and memory/performance considerations.
Hiring managers look for precision, avoidance of ambiguous jargon, and ability to explain trade-offs under real production conditions.
Object.create() and Object.assign() serve completely different purposes:
Object.create() creates a new object with a specified prototype:
const proto = { greet() { console.log('Hello'); } };
const obj = Object.create(proto);
obj.greet(); // 'Hello'
console.log(Object.getPrototypeOf(obj) === proto); // true
Object.assign() copies properties from source objects to a target object:
const target = { a: 1 };
const source = { b: 2, c: 3 };
Object.assign(target, source);
console.log(target); // { a: 1, b: 2, c: 3 }
Key differences:
| Object.create() | Object.assign() |
|----------------|-----------------|
| Creates new object | Modifies existing object |
| Sets prototype chain | Copies own properties |
| For inheritance | For composition/merging |
| Returns new object | Returns modified target |
// Object.create with properties
const obj1 = Object.create(proto, {
name: { value: 'John', writable: true }
});
// Object.assign with multiple sources
const merged = Object.assign({}, source1, source2, source3);
Candidate Response Strategy & Interview Tips
- Start with a concise one-sentence summary: Deliver a direct, confident answer first before expanding into nuances.
- Demonstrate real-world trade-offs: Discuss where this approach excels and when you would avoid it in production systems.
- Discuss complexity & edge cases: Proactively explain time/space complexity or boundary conditions (null values, scale limits).
- Prepare for interviewer follow-ups: Technical hiring panels frequently probe deeper into concurrency, backward compatibility, or alternative libraries.