概念
instanceof
是JavaScript中的一个运算符,用于检查对象是否是特定构造函数的实例。它的语法形式为object instanceof constructor
,其中object
是待检查的对象,constructor
是构造函数。该运算符返回一个布尔值,如果对象是指定构造函数的实例,返回true
,否则返回false
。
用法
instanceof
运算符可以用于检查对象是否是某个构造函数的实例,也可以用于检查对象是否是某个构造函数的派生类的实例(即子类的实例)。
下面是一些使用instanceof
的示例:
检查对象是否是构造函数的实例
代码语言:javascript复制function Person(name) {
this.name = name;
}
var person = new Person('John');
console.log(person instanceof Person); // 输出: true
console.log(person instanceof Object); // 输出: true
console.log(person instanceof Array); // 输出: false
在上面的示例中,我们创建了一个名为Person
的构造函数,并使用new
关键字创建了一个person
对象。通过instanceof
运算符,我们可以检查person
对象是否是Person
构造函数的实例。由于person
对象是通过Person
构造函数创建的,所以person instanceof Person
返回true
。
此外,由于所有的对象都继承自Object
,因此person
对象也是Object
的实例,所以person instanceof Object
返回true
。但是,由于person
对象不是Array
的实例,所以person instanceof Array
返回false
。
检查对象是否是构造函数派生类的实例
代码语言:javascript复制class Animal {
constructor(name) {
this.name = name;
}
eat() {
console.log('Animal is eating.');
}
}
class Dog extends Animal {
bark() {
console.log('Dog is barking.');
}
}
var dog = new Dog('Max');
console.log(dog instanceof Animal); // 输出: true
console.log(dog instanceof Dog); // 输出: true
console.log(dog instanceof Object); // 输出: true
在上面的示例中,我们定义了一个Animal
类和一个Dog
类,Dog
类是Animal
类的子类。我们创建了一个dog
对象,通过instanceof
运算符,我们可以检查dog
对象是否是Animal
类和Dog
类的实例。由于dog
对象是通过Dog
类创建的,并且Dog
类是Animal
类的子类,所以dog instanceof Animal
和dog instanceof Dog
都返回true