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

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) —
推荐阅读:甲乙丙进行60米比赛 达兰倍尔错在哪里 古罗马人的遗嘱 将10毫升酒装入一个圆锥容器中 为 WordPress 设置评论模块登录可见 仅允许游客浏览wordpress指定分类的文章 指定 wordpress 默认用户角色后台登陆权限 为 WordPress 主题添加大红灯笼特效 为 wordpress 文章作者在评论留言时显示“本文作者”提示 为 WordPress 主题添加花瓣飘落特效
- 评论列表
-
- 添加评论