JavaScript instanceof 运算符

2025年3月2日 | 阅读 4 分钟

JavaScript instanceof 运算符可在运行时查找对象的类型。结果可以是我们根据输入和包含的对象而期望的布尔值,即 true 或 false。

语法

参数

ObjectName:对象的名称。

ObjectType:它决定了用于测试的对象类型。

为什么 JavaScript 中需要 instanceof?

instanceof 运算符在 JavaScript 中是必需的,因为当我们声明 XYZ 为代表许多用户定义数据类型的变量时,它可以用于多种目的,如整数、字符、数组和许多其他数据类型。因此,此运算符将帮助我们识别对象所链接的特定数据类型。

示例 1:Instanceof 运算符和继承

我们将在此处讨论一些与 instanceof 运算符相关的示例。

代码

输出

JavaScript instanceof Operator

理由

  1. 最初,创建了一个包含几个课程值的 course 数组。
  2. 接下来,我们验证了 course 对象是否是 array 类型的实例;由于 courses 是数组类型,因此我们得到了 true 值。
  3. 之后,我们验证了 course 对象是否是 Number 类型的实例;由于 courses 不是 Number 类型,因此结果为 false。

示例 2:Symbol.hasInstance

正如我们可以使用 instanceof 运算符来确定对象是否是类实例一样,我们也可以使用 Symbol.hasInstance 来检查类是否包含对象实例。如果类中存在对象,Symbol.hasInstance 将返回 true;否则,它将返回 false。

代码

输出

JavaScript instanceof Operator

理由

  1. 我们首先创建了一个名为 Lang 的类,并向其添加了一个构造函数。
  2. 接下来,我们创建了一个名为 Java 的对象,并将其初始状态设置为 Lang 类实例。
  3. 最后,我们使用 Symbol.hasInstance 方法来确定 Lang 类是否包含 Java 对象实例。

示例 3:将 String 与 instanceof 结合使用

在此示例中,我们将看到 instanceof 运算符如何处理 String 对象。

代码

输出

JavaScript instanceof Operator

理由

  1. 在第一步中,我们通过初始化 sentence 为“今天是星期一。”来开始。
  2. 接下来,创建了一个字符串对象。
  3. 最终,我们验证了哪个对象属于哪个类。

示例 4:将 Date 与 instanceof 结合使用

在此示例中,我们将检查 instanceof 运算符在使用 Date 对象时的行为。

代码

输出

JavaScript instanceof Operator

理由

  1. 在第一步中,我们创建了一个 Date 类的对象,并将其命名为 new_date。
  2. 最后,我们验证了该对象是哪个类的实例。

示例 5:使用 Object.create() 创建对象

在此示例中,当使用 Object.create() 方法创建对象时,我们将检查 instanceof 运算符的行为。

代码

输出

JavaScript instanceof Operator

示例 6:不是 instanceof

在此示例中,我们将学习如何通过使用 Not 运算符结合 instanceof 运算符来检查对象是否是类的实例。

代码

输出

JavaScript instanceof Operator

理由

  1. 在第一步中创建了两个函数 Class1() 和 Class2(),它们都是空的。
  2. 接下来,我们创建了一个名为 obj 的对象,并将其分配给 Class2() 的实例。
  3. 接下来,我们确定了哪个对象属于哪个类。
  4. 接下来,通过在 if 条件中应用 (!),我们利用了不是 instanceof 方法,通过在 instanceof 方法前面放置一个 not (!) 运算符,如果条件满足,我们可以使对象成为 Class1() 的实例。

总结

从本文中,我们学到了以下内容:

  1. 使用 JavaScript instanceof 运算符在运行时确定对象的类型。
  2. 如果对象是特定类的实例,JavaScript instanceof 运算符将返回 true;否则,它将返回 false。
  3. ObjectName 和 ObjectType 是 JavaScript instanceof 运算符作为参数接收的两个参数。
  4. 如果 ObjectType 不是对象,JavaScript instanceof 运算符将抛出异常。