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

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) —
推荐阅读:中华人民共和国深海海底区域资源勘探开发法(主席令第四十二号) 全国人民代表大会常务委员会关于修改《中华人民共和国人口与计划生育法》的决定(主席令第四十一号) 全国人大常委会关于修改《中华人民共和国高等教育法》的决定(主席令第四十号) 中华人民共和国反家庭暴力法(主席令第三十七号) 全国人大常委会关于修改《中华人民共和国教育法》的决定(主席令第三十九号) 中华人民共和国国家勋章和国家荣誉称号法(主席令第三十八号) 中华人民共和国反恐怖主义法(主席令第三十六号) 地图管理条例(国务院令第664号) 中华人民共和国宪法 全国社会保障基金条例(国务院令第667号)
- 评论列表
-
- 添加评论