Bird
Raised Fist0
Javascriptprogramming~5 mins

Object.create usage in Javascript - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Object.create usage
O(n)
Understanding Time Complexity

Let's explore how using Object.create affects the time it takes for a program to run.

We want to know how the work grows when we create many objects this way.

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


const proto = { greet() { return 'Hello'; } };

function createObjects(n) {
  const arr = [];
  for (let i = 0; i < n; i++) {
    arr.push(Object.create(proto));
  }
  return arr;
}
    

This code creates an array of n objects, each linked to the same prototype.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: The for loop runs n times, creating one object each time.
  • How many times: Exactly once per object, so n times total.
How Execution Grows With Input

As n grows, the number of objects created grows the same way.

Input Size (n)Approx. Operations
1010 object creations
100100 object creations
10001000 object creations

Pattern observation: The work grows directly with the number of objects you want to create.

Final Time Complexity

Time Complexity: O(n)

This means the time to create objects grows in a straight line with how many objects you make.

Common Mistake

[X] Wrong: "Using Object.create is instant and does not depend on how many objects we create."

[OK] Correct: Each call to Object.create makes a new object, so more objects mean more work and more time.

Interview Connect

Understanding how object creation scales helps you write efficient code and explain your choices clearly in interviews.

Self-Check

"What if we replaced the for loop with a recursive function creating objects? How would the time complexity change?"

Practice

(1/5)
1. What does Object.create(proto) do in JavaScript?
easy
A. Deletes the proto object and returns a new one.
B. Creates a new object with proto as its prototype.
C. Copies all properties from proto into a new object.
D. Creates a new array from the proto object.

Solution

  1. Step 1: Understand Object.create purpose

    Object.create(proto) creates a new object that uses proto as its prototype, meaning it inherits properties and methods from proto.
  2. Step 2: Differentiate from copying

    It does not copy properties but links the new object to proto via the prototype chain.
  3. Final Answer:

    Creates a new object with proto as its prototype. -> Option B
  4. Quick Check:

    Object.create(proto) sets prototype = proto [OK]
Hint: Remember: Object.create sets prototype, does not copy properties [OK]
Common Mistakes:
  • Thinking it copies properties instead of setting prototype
  • Confusing with Object.assign or spread operator
  • Assuming it creates arrays or deletes objects
2. Which of the following is the correct syntax to create an object child with prototype parent using Object.create?
easy
A. const child = Object.create = parent;
B. const child = new Object.create(parent);
C. const child = Object.create(parent);
D. const child = Object.create(parent)();

Solution

  1. Step 1: Recall Object.create syntax

    The correct syntax is Object.create(proto) which returns a new object with proto as prototype.
  2. Step 2: Check each option

    const child = Object.create(parent); uses correct syntax. const child = Object.create = parent; wrongly assigns. const child = new Object.create(parent); wrongly uses new. const child = Object.create(parent)(); tries to call the result as a function.
  3. Final Answer:

    const child = Object.create(parent); -> Option C
  4. Quick Check:

    Correct syntax = Object.create(proto) [OK]
Hint: Use Object.create(proto) without new or extra parentheses [OK]
Common Mistakes:
  • Using new with Object.create
  • Assigning Object.create to a variable incorrectly
  • Calling the result as a function
3. What will be the output of this code?
const parent = { greet() { return 'Hello'; } };
const child = Object.create(parent);
console.log(child.greet());
medium
A. 'Hello'
B. undefined
C. TypeError
D. '' (empty string)

Solution

  1. Step 1: Understand prototype inheritance

    child is created with parent as prototype, so it inherits greet method.
  2. Step 2: Calling child.greet()

    Since greet exists on parent, child.greet() calls that method and returns 'Hello'.
  3. Final Answer:

    'Hello' -> Option A
  4. Quick Check:

    Inherited method call returns 'Hello' [OK]
Hint: Object.create links prototype, so inherited methods work [OK]
Common Mistakes:
  • Expecting undefined because child has no own greet
  • Thinking it causes error without own method
  • Confusing prototype chain lookup
4. Find the error in this code snippet:
const proto = { x: 10 };
const obj = Object.create();
console.log(obj.x);
medium
A. Object.create() requires a prototype argument.
B. Cannot access property x on obj.
C. Syntax error in Object.create call.
D. obj.x is undefined because x is not own property.

Solution

  1. Step 1: Check Object.create usage

    Object.create() without arguments is invalid because it requires a prototype object or null.
  2. Step 2: Understand consequence

    Since no prototype is given, this causes a TypeError or unexpected behavior.
  3. Final Answer:

    Object.create() requires a prototype argument. -> Option A
  4. Quick Check:

    Object.create(proto) needs proto argument [OK]
Hint: Always pass prototype or null to Object.create [OK]
Common Mistakes:
  • Calling Object.create without arguments
  • Expecting default prototype if none given
  • Ignoring TypeError from missing argument
5. How can you create an object child with prototype parent and add a new property age with value 25 during creation using Object.create?
hard
A. const child = Object.create(parent, { age: 25, writable: true });
B. const child = Object.create(parent); child.age = 25;
C. const child = Object.create(parent, { age: 25 });
D. const child = Object.create(parent, { age: { value: 25, writable: true, enumerable: true, configurable: true } });

Solution

  1. Step 1: Understand Object.create second argument

    The second argument to Object.create is a property descriptor object where each property is defined with descriptors like value, writable, enumerable, and configurable.
  2. Step 2: Check each option

    const child = Object.create(parent, { age: { value: 25, writable: true, enumerable: true, configurable: true } }); correctly uses property descriptor for age. const child = Object.create(parent); child.age = 25; adds property after creation, not during. Options A and C use incorrect descriptor syntax.
  3. Final Answer:

    const child = Object.create(parent, { age: { value: 25, writable: true, enumerable: true, configurable: true } }); -> Option D
  4. Quick Check:

    Use property descriptors in second argument [OK]
Hint: Use property descriptors object as second argument to add properties [OK]
Common Mistakes:
  • Adding properties directly in second argument without descriptors
  • Adding properties after creation instead of during
  • Using wrong syntax for property descriptors
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