How to Implement the instanceof in Javascript?

  • 时间:2020-09-17 14:37:27
  • 分类:网络文摘
  • 阅读:160 次
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) —

推荐阅读:
利用三十而已热门关键词公众号截流变现实操  困境下的SEO,站长如何自渡?  建设一个网站的费用由哪些组成?  国内主机商开始取消个人网站备案码  网站SEO优化,哪些页面不需要Google建立索引  如何利用Google Keywords Planner 做SEO的关键词调研?  杨泽业:复利是世界第八大奇迹,网站是财富倍增的神兵利器  企业网站建设关于域名的选择纯干货  网站渗透测试 该如何入门  谷歌SEO推广团队,这样管理更高效 
评论列表
添加评论