当前位置:首页 > 范文知识 > 深入浅出instanceof操作符

深入浅出instanceof操作符

来源:查看原文

instanceof是JavaScript中一个非经常用的操作符。可以用来判断一个工具是否是某个类的实例。其语法名堂为obj instanceof Class,即工签字 instanceof 类名。

若是obj是Class类的实例,则返回true;否则返回false。例如,若是有一段代码:

var arr = [1, 2, 3];
console.log(arr instanceof Array); // true

这个例子中,数组arr是Array类的实例,以是返回true。

除了判断基本类型的实例,instanceof还可以判断自界说工具的实例。例如,下面的例子:

 function Person(name){
this.name = name;
}
var p = new Person('Tom');
console.log(p instanceof Person); // true

可以看出,p是Person类的实例,以是返回true。

需要注意的是,instanceof判断的是原型链,若是obj的原型链上存在Class.prototype,那么obj instanceof Class返回true。

接下来,我们再来看说说instanceof的原理。着实,instanceof的运算历程相当于两个步骤:

1. 获取obj的原型链

2. 在原型链上查找是否存在Class的prototype

若是发现proto指向了Class的prototype,就判断obj是Class类的实例,否则继续沿着proto.__proto__寻找,直到找到原型链的最后,若是还没有找到,那么就判断obj不是Class类的实例。

最后提醒一下:instanceof验证的是一个工具是否是某个类的实例,而不是某个类自己的工具。以是当我们直接使用Class instanceof Object时,永远都是true,由于所有类都是Object的子类。

信息搜索
最新信息