JavaScript 类型判断函数 is 的代码实现与原理分析

作者:代码拾荒时间:2026-10-24 18:18:06浏览:362

本文分析一个用于判断JavaScript数据类型的 is 函数。该函数利用 Object.prototype.toString 获取对象内部[[Class]]属性,通过 slice 截取类型字符串。针对 null 和 undefined 的特殊返回值,代码进行了单独处理,并探讨了声明 undefined 局部变量的性能优化意图。

JavaScript 类型判断 is 函数源码实现

代码如下:

 
var is = function(obj,type){
var toString=Object.prototype.toString,undefined;
return obj===null&&type==='Null'||
obj===undefined&&type==='Undefined'||
toString.call(obj).slice(8,-1)===type;
} 
//原文中有小括号包裹每个逻辑与运算,但根据运算符优先级,括号可以省略
//第一行声明undefined,个人理解是为了提高性能,不必再去顶级作用域中查询undefined.


根据ECMA-262标准,Object.prototype.toString() 方法返回对象实例的类型信息,其返回格式为包含 '[object ', class 名称以及 ']' 的字符串。


因此,通过 slice 方法截取第8位到倒数第1位之间的字符,即可获取具体的类型值(class)。


其中 null 与 undefined 属于例外情况,因为直接调用 toString 时它们返回的是


IE浏览器中显示为 [object Object]


标准浏览器中显示为 [object Window](或特定宿主环境对象)。


鉴于上述差异,代码中对这两种类型进行了单独判断处理。


相关文章:javascript 深拷贝

作者最新文章