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 object | Modifies existing object |
| Sets prototype chain | Copies own properties |
| For inheritance | For composition/merging |
| Returns new object | Returns 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);