InterviewHubPRO
Section Overview
Q493

Question 493 of 521

Part 8: Modern JavaScript APIs, WeakRef, Proxy & Performance (464 - 521)

95%
JavaScript Internals (521 Qs)•Part 8: Modern JavaScript APIs, WeakRef, Proxy & Performance (464 - 521)

What is the difference between Object.create() and Object.assign()?

Object.create() and Object.assign() serve completely different purposes:

Object.create() creates a new object with a specified prototype:

javascript
 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:

javascript
 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 objectModifies existing object
Sets prototype chainCopies own properties
For inheritanceFor composition/merging
Returns new objectReturns modified target
javascript
 // 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);