当前位置:首页 > JavaScript

js实现typeof

2026-01-31 20:23:34JavaScript

typeof 运算符的基本用法

在 JavaScript 中,typeof 是一个一元运算符,用于返回一个表示操作数类型的字符串。以下是基本语法和常见类型的返回值:

typeof operand

常见返回值:

  • "number":数值类型(包括 NaN)。
  • "string":字符串类型。
  • "boolean":布尔类型。
  • "undefined":未定义的变量或值。
  • "object":对象或 null(历史遗留问题)。
  • "function":函数类型。
  • "symbol":Symbol 类型(ES6 新增)。

实现自定义 typeof 函数

由于原生 typeofnull 和数组的检测不够精确,可以通过以下方式实现更精确的类型检测:

function customTypeof(value) {
  if (value === null) {
    return "null";
  }
  const baseType = typeof value;
  if (baseType !== "object") {
    return baseType;
  }
  const objectType = Object.prototype.toString.call(value).slice(8, -1).toLowerCase();
  return objectType;
}

处理特殊情况的示例

针对 null、数组和内置对象的检测:

console.log(customTypeof(null)); // "null"
console.log(customTypeof([])); // "array"
console.log(customTypeof(new Date())); // "date"
console.log(customTypeof(/regex/)); // "regexp"

使用 Object.prototype.toString 的底层原理

Object.prototype.toString 方法会返回 [object Type] 格式的字符串,其中 Type 是对象的内部类型:

js实现typeof

Object.prototype.toString.call(42); // "[object Number]"
Object.prototype.toString.call("hello"); // "[object String]"
Object.prototype.toString.call(true); // "[object Boolean]"

注意事项

  • 原生 typeof 对函数返回 "function",但函数本质是可调用的对象。
  • 使用 instanceof 可以检测对象的构造函数链。
  • 现代 JavaScript 可以使用 Symbol.toStringTag 自定义对象的类型标签。

标签: jstypeof
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…