How to Implement the instanceof in Javascript?


JS How to Implement the instanceof in Javascript? javascript

NodeJs / Javascript

In Javascript, the operator instanceof is used to perform a test to check if the prototype property of a constructor apperas in the chain of the object’s prototype chain.

The syntax to use is:

1
2
3
object instanceof constructor
// object - the object to test
// constructor - to test against
object instanceof constructor
// object - the object to test
// constructor - to test against

For example:

1
2
3
4
5
6
7
8
9
10
function Car() {}
function Train() {}
 
const car = new Car();
const train = new Train();
 
console.log(car instanceof Car); // true
console.log(car instanceof Train); // false
console.log(train instanceof Car); // false;
console.log(train instanceof Train); // true;
function Car() {}
function Train() {}

const car = new Car();
const train = new Train();

console.log(car instanceof Car); // true
console.log(car instanceof Train); // false
console.log(train instanceof Car); // false;
console.log(train instanceof Train); // true;

We can implement a instanceOf function in pure Javascript that does the same instanceof check – probably useful in front-end Javascript interview:

1
2
3
4
5
6
7
8
9
function instanceOf(left, right) {
    let proto = left.__proto__;
    let prototype = right.prototype;
    for (;;) {
        if (proto === null) return false;
        if (proto === prototype) return true;
        proto = proto.__proto__; // trace way up along the chain
    }
}
function instanceOf(left, right) {
    let proto = left.__proto__;
    let prototype = right.prototype;
    for (;;) {
        if (proto === null) return false;
        if (proto === prototype) return true;
        proto = proto.__proto__; // trace way up along the chain
    }
}

And it expects to produce the same results:

1
2
3
4
console.log(instanceOf(car, Car)); // true
console.log(instanceOf(car, Train)); // false
console.log(instanceOf(train, Car)); // false;
console.log(instanceOf(train, Train)); // true;
console.log(instanceOf(car, Car)); // true
console.log(instanceOf(car, Train)); // false
console.log(instanceOf(train, Car)); // false;
console.log(instanceOf(train, Train)); // true;

The idea is conduct a loop, and trace up the prototype property along the chain until we have a match (equal prototype in the chain) or we have reached the end of the chain – which is null.

–EOF (The Ultimate Computing & Technology Blog) —

GD Star Rating
a WordPress rating system
322 words
Last Post: How to Compute the Surface Area of 3D Shapes (Cubes Placed on Grid Cells)?
Next Post: How to Find Positive Integer Solution for a Given Equation using Bruteforce, Two Pointer or Binary Search Algorithms?

The Permanent URL is: How to Implement the instanceof in Javascript?

Leave a Reply