typeof 和 instanceof的区别
时间: 2023-09-07 10:18:27 浏览: 91
JS中typeof与instanceof的区别
typeof 和 instanceof 是 JavaScript 中用来检查变量类型的运算符。
typeof 运算符用于确定一个变量的基本类型,它返回一个字符串表示该变量的类型。例如:
typeof 42; // "number"
typeof "hello"; // "string"
typeof true; // "boolean"
typeof undefined; // "undefined"
typeof null; // "object"
typeof []; // "object"
typeof {}; // "object"
typeof function() {}; // "function"
需要注意的是,typeof 对于数组、对象、null 和函数的类型判断并不准确。它将数组和对象都归类为 "object",将 null 归类为 "object",将函数归类为 "function"。
instanceof 运算符用于检查一个对象是否属于某个类(或某个类的原型链)。它返回一个布尔值,表示对象是否是该类(或该类的子类)的实例。例如:
var arr = [];
arr instanceof Array; // true
var obj = {};
obj instanceof Object; // true
var func = function() {};
func instanceof Function; // true
需要注意的是,instanceof 检查的是对象的原型链,而不是基本类型。如果对象是通过字面量或构造函数创建的,并且其原型链中包含检查的类,则 instanceof 将返回 true;否则,返回 false。
因此,typeof 适用于基本类型和函数的检查,但对于数组、null 和对象的类型判断并不准确;而 instanceof 适用于对象的类型检查,可以精确判断对象是否是某个类的实例。
阅读全文