JavaScript 获取变量类型的完整实现
作者:小括号时间:2026-10-24 22:19:30浏览:498
本文介绍一个用于获取 JavaScript 变量类型的自定义函数。该函数首先处理 null 值,利用 typeof 判断基础类型,并通过 Object.prototype.toString 方法精确识别对象类型。代码包含获取构造函数名称的辅助逻辑,适用于需要严格类型判断的场景。
JavaScript 获取变量类型的实现原理
要实现获取变量类型的功能,需要编写特定的代码。以下提供的函数接收一个变量作为参数,并返回描述该变量类型的字符串。
// 定义正则表达式以匹配函数名
getType 函数源码解析
具体实现代码如下:
// 获取变量 x 的类型,返回类型名称字符串
function getType(x) {
// 如果变量 x 为 null,直接返回字符串 "null"
if (x == null) return "null";
// 使用 typeof 运算符获取初步类型
var t = typeof x;
// 如果 typeof 返回的不是 "object",说明是基础类型,直接返回该类型名称
if (t.toLocaleLowerCase() != "object") return t;
// 对于对象类型,调用 Object 原型的 toString 方法获取详细信息
// Object.prototype.toString 返回格式通常为 [object ClassName]
t = Object.prototype.toString.apply(x).toLowerCase();
// 从返回字符串中截取类名部分,去掉前8个字符和最后一个括号
t = t.substring(8, t.length - 1);
// 再次检查截取后的类型是否仍为普通 object
if (t.toLocaleLowerCase() != "object") return t;
// 验证 x 的构造函数是否指向 Object
if (x.constructor == Object) return t;
// 如果构造函数存在且为函数类型,则获取其名称
if (typeof x.constructor == "function")
}
return getFunctionName(x.constructor);
// 如果无法确定类型,返回未知类型提示
return "unknow type";
}
// 辅助函数:获取函数的名称
function getFunctionName(fn) {
// 确保传入的参数是函数类型,否则抛出错误
}
return name[1];
} 作者最新文章
JS语法错误会阻止加载吗?区分SyntaxError与资源加载失败
2026-11-05 16:08:46
JavaScript常见SyntaxError语法错误排查与修复方法
2026-11-05 13:58:44
JS中slice、substring和substr截取字符串的区别
2026-11-05 13:43:47
JS 转 TS 手动迁移最佳实践:从配置 tsconfig 到消除 any 类型
2026-11-05 11:53:32
为什么JS数组push后得到的是数字而不是数组?
2026-11-05 09:59:18
