更新时间:2023年08月31日14时10分 来源:传智教育 浏览次数:
instanceof和typeof是两个用于检查变量类型的JavaScript操作符,但它们有不同的用途和工作方式。
·typeof 用于检查一个值的数据类型,返回一个字符串,表示该值的类型。
·它是一个一元操作符,后面跟一个要检查类型的变量或表达式。
示例代码:
typeof 42; // 返回 "number" typeof "Hello"; // 返回 "string" typeof true; // 返回 "boolean" typeof {}; // 返回 "object" typeof []; // 返回 "object"(数组也被认为是对象) typeof function() {}; // 返回 "function"
typeof主要用于基本数据类型(如数字、字符串、布尔值、函数等)的检查。
·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在处理跨窗口或跨帧的对象时可能会产生意外的结果,因为它检查对象是否在特定的原型链上,而不仅仅是类的构造函数。