在jquery-19.1.1源码中,type,检查对象的类型是:Boolean/Number/String/Function/Array/Date/RegExp/Object/Error中的一种,返回的结果是类型的小写。
核心代码:
var // [[Class]] -> type pairs class2type = {}, core_toString = class2type.toString; // Populate the class2type map
jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { class2type[ "[object " + name + "]" ] = name.toLowerCase(); }); type: function (obj) { if ( obj == null ) { return String( obj ); } return typeof obj === "object" || typeof obj === "function" ? class2type[ core_toString.call(obj) ] || "object" : typeof obj; }
代码中:
class2type[ core_toString.call(obj) ]处理 class2type["[object object]"]/class2type["[object function]"]/class2type["[object boolean]"]等等这些格式。
JavaScript也自带有一个typeof运算符,可以确定数据的类型。不过,对于绝大多数对象而言,typeof运算符都返回"object",无法区分具体的类型。jQuery.type()
可以更加精确地确定JS内置对象的类型。
弥补了 typeof 的缺陷。
譬如如下代码:
var dt = new Date(); console.log(typeof dt); //object console.log(jQuery.type(dt)); // date