How to Implement the instanceof in Javascript?

  • Time:2020-09-17 14:37:27
  • Class:Weblog
  • Read:33
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) —

Recommend:
5 Cognitive Biases You Can Use to Boost E-Commerce Conversions
Important SEO Tips for E-commerce That You Cannot Disregard
5 Effective Ways to Improve Blog Conversion Rate
7 Reasons Blogging is Essential for Law Firms
Should Your Blog Extend Into Multimedia Forms of Content?
How Small Companies Can Use Big Data
Hands Up and Step Slowly Away from the Keyboard: Why Good Execut
How to Improve Bad Blog Posts
5 Things That Bloggers Use in Their Craft
How To Increase Your Ecommerce Sales Using Social Media
Share:Facebook Twitter
Comment list
Comment add