JavaScript instanceof

2023-05-17 13:18:25 浏览数 (1)

概念

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 Animaldog instanceof Dog都返回true

0 人点赞