教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

instanceof与typeof()的区别?

更新时间:2023年08月31日14时10分 来源:传智教育 浏览次数:

好口碑IT培训

  instanceof和typeof是两个用于检查变量类型的JavaScript操作符,但它们有不同的用途和工作方式。

  1.typeof操作符:

  ·typeof 用于检查一个值的数据类型,返回一个字符串,表示该值的类型。

  ·它是一个一元操作符,后面跟一个要检查类型的变量或表达式。

  示例代码:

typeof 42; // 返回 "number"
typeof "Hello"; // 返回 "string"
typeof true; // 返回 "boolean"
typeof {}; // 返回 "object"
typeof []; // 返回 "object"(数组也被认为是对象)
typeof function() {}; // 返回 "function"

  typeof主要用于基本数据类型(如数字、字符串、布尔值、函数等)的检查。

  2.instanceof 操作符:

  ·instanceof 用于检查一个对象是否属于某个特定的类(构造函数)或原型链上的类。

  ·它需要两个操作数:要检查的对象和要检查的构造函数。

  示例代码:

function Dog(name) {
  this.name = name;
}

const myDog = new Dog("Buddy");

myDog instanceof Dog; // 返回 true,因为myDog是Dog类的实例
myDog instanceof Object; // 返回 true,因为所有对象都是Object类的实例

  instanceof 主要用于检查自定义类的实例以及对象是否是某个类的子类。

  总结:

  ·typeof 用于检查基本数据类型和函数的类型,但对于自定义类的实例通常无法提供有用的信息。

  ·instanceof 用于检查对象是否是特定类的实例,更适用于自定义类的类型检查。

  需要注意的是,typeof null返回 "object",这是JavaScript的历史遗留问题,不应该被视为null是对象的证据。此外,instanceof在处理跨窗口或跨帧的对象时可能会产生意外的结果,因为它检查对象是否在特定的原型链上,而不仅仅是类的构造函数。

0 分享到:
和我们在线交谈!