小编典典

JavaScript 中的 instanceof 运算符是什么?

all

JavaScript 中的instanceof关键字在第一次遇到时可能会很混乱,因为人们倾向于认为 JavaScript 不是一种面向对象的编程语言。

  • 它是什么?
  • 它解决了哪些问题?
  • 什么时候合适,什么时候不合适?

阅读 133

收藏
2022-04-04

共1个答案

小编典典

实例

左侧 (LHS) 操作数是被测试到右侧 (RHS) 操作数的实际对象,右侧 (RHS) 操作数是类的实际构造函数。基本定义是:

检查当前对象,如果对象属于指定的对象类型,则返回 true。

这里有一些很好的例子,下面是一个直接取自Mozilla
开发者网站
的例子:

var color1 = new String("green");
color1 instanceof String; // returns true
var color2 = "coral"; //no type specified
color2 instanceof String; // returns false (color2 is not a String object)

值得一提的是instanceof,如果对象继承自类的原型,则计算结果为 true:

var p = new Person("Jon");
p instanceof Person

这是p instanceof Person真的,因为p继承自Person.prototype.

根据 OP 的要求

我添加了一个带有一些示例代码和解释的小示例。

当你声明一个变量时,你给它一个特定的类型。

例如:

int i;
float f;
Customer c;

上面显示了一些变量,即ifc。类型是integer,float和用户定义的Customer数据类型。上述类型可以用于任何语言,而不仅仅是
JavaScript。然而,在 JavaScript 中,当你声明一个变量时,你没有明确定义一个类型var x,x
可以是一个数字/字符串/用户定义的数据类型。那么instanceof它的作用是检查对象以查看它是否属于指定的类型,因此从上面获取Customer我们可以做的对象:

var c = new Customer();
c instanceof Customer; //Returns true as c is just a customer
c instanceof String; //Returns false as c is not a string, it's a customer silly!

上面我们已经看到它c是用 type 声明的Customer。我们已经新建了它并检查了它是否属于类型Customer。当然,它返回
true。然后仍然使用Customer我们检查它是否是一个对象String。不,绝对不是String我们新的Customer对象而不是String对象。在这种情况下,它返回
false。

真的就是这么简单!

2022-04-04