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

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) —
推荐阅读:清明节扫烈士墓 清明·祭祀·缅怀 文化艺术节 关于报刊亭的数学题 数学题:当甲车到达时,乙车距离工地还有24千米 数学题:光华小学中、高年级共有学生600名 数学题:求大阴影部分的面积 数学题:如何只用这2个水壶从池塘里取得3升的水 关于可能性的数学题 数学题:ABCD乘9等于DCBA,问ABCD各是数字几
- 评论列表
-
- 添加评论