How to Implement the instanceof in Javascript?
- 时间:2020-09-17 14:37:27
- 分类:网络文摘
- 阅读:108 次

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) —
推荐阅读:蜂蜜是冬天补养佳品 滋阴润燥的食物 冬季饮食10个注意 饮食搭配有原则 秋冬进补忌选狗肉 不可不知的进补攻略 养生又保健:柚子皮的神奇做法 选择有机食品真的更有营养吗? 回顾2012年发生的八大食品安全事件 卫生部颁布:预包装食品营养标签通则 申请百度联盟,几次三番都不成功啊! 新浪sae不支持写操作,需要移植代码! 维生素B2(核黄素)的食物来源
- 评论列表
-
- 添加评论