Write a function `myInstanceOf(obj, Constructor)` that checks if obj is an instance of Constructor by traversing the prototype chain.
Problem Statement
Examples
Input: myInstanceOf(new Date(), Date)
Output: true
Explanation: Traverses prototype chain to find Constructor.prototype.
Complexity
Time Complexity: O(N)
Space Complexity: O(1)
Hints
Editorial & Approach
Problem Overview & Intuition
To solve Implement instanceof, we consider the execution characteristics of JavaScript engines. Write a function `myInstanceOf(obj, Constructor)` that checks if obj is an instance of Constructor by traversing the prototype chain. By utilizing idiomatic language constructs and clean algorithmic principles, we can accomplish this with optimal time and memory usage.
Step-by-Step Approach
- Understand Problem Contract: Identify input arguments, return type expectations, and edge cases (empty inputs, nullish values).
- Choose Core Mechanism: Use modern JavaScript patterns (instanceof checks if constructor.prototype exists in the prototype chain of obj).
- Implement Logic: Handle state and transformations efficiently (use object.getprototypeof() to traverse up the chain).
- Return Result: Ensure proper return format and preserve caller context if applicable.
Optimal Implementation (JavaScript)
function myInstanceOf(obj, Constructor) {
if (obj === null || typeof obj !== "object") return false;
let proto = Object.getPrototypeOf(obj);
while (proto !== null) {
if (proto === Constructor.prototype) return true;
proto = Object.getPrototypeOf(proto);
}
return false;
}
Complexity Analysis
Edge Cases & Corner Traps Handled
- Empty or boundary inputs (empty arrays, strings, zero length).
- Type checks and unexpected values (e.g.
null,undefined, negative numbers). - Closure preservation and memory isolation between separate invocations.