运算符的实例测试构造函数的prototype属性是否出现在对象的原型链中的任何位置。在更简单的语言中,它测试变量是否为某种类型。但是它有一些警告。让我们看一些例子。
字符串和数字是原始值,不是对象,因此没有[[Prototype]],因此仅当将它们包装在常规对象中时,它才有效。
console.log(1 instanceof Number)
console.log(new Number(1) instanceof Number)
console.log("" instanceof String)
console.log(new String("") instanceof String)输出结果
false true false true
返回其对象的函数(JS类)可以使用instanceof运算符检查其对象。
function Person(name) {
this.name = name
}
let john = new Person("John");
console.log(john instanceof Person)输出结果
true
JS支持原型继承,因此,如果您检查层次结构中任何类的instanceof,它将返回true。
class Person {}
class Student extends Person {
constructor(name) {
super() this.name = name
}
}
let john = new Student("John");
console.log(john instanceof Person)
console.log(john instanceof Student)输出结果
true true