欢迎来到我的博客文章!所有文章都是满满的前端干货,文章简明扼要。
typeof 和 instanceof 是 JavaScript 中用于类型检测的两个核心操作符,typeof:检测基本数据类型,instanceof:检测对象的构造函数/原型链
通用、准确的类型判断,推荐方法:Object.prototype.toString.call(obj).slice(8, -1)。
返回一个字符串,表示操作数的数据类型。
| 表达式 | typeof 结果 | 说明 |
|---|---|---|
| undefined | "undefined" | 未定义 |
| null | "object" | ⚠️ 历史 bug(JS 设计错误) |
| true / false | "boolean" | 布尔值 |
| 42, 3.14 | "number" | 数字 |
| 123n | "bigint" | ES2020 新增 |
| "hello" | "string" | 字符串 |
| Symbol() | "symbol" | ES6 新增 |
| function f(){} | "function" | 函数(特殊对象) |
| {}, [], new Date() | "object" | 所有对象(包括数组、日期等) |
判断一个对象是否是某个构造函数的实例。通过检查原型链(__proto__)是否包含构造函数的 prototype。
| 场景 | 推荐方法 |
|---|---|
| 判断 string / number / boolean / function | typeof |
| 判断 null | 直接 === null |
| 判断 Array | Array.isArray() |
| 判断 Date / RegExp / 自定义类 | instanceof(同窗口) |
| 跨 iframe 类型检测 | 使用 Object.prototype.toString.call()(终极方案) |