闲来无事想学下jquery,就扒了下jquery(1.7.2)的源码,看到开头前面的工具函数,有个判断数据类型的挺实用的,就果断摘出来用。
下面两段代码,分别为:
(1)自己从jquery里摘出来的代码,适当修改了下。
(2)jquery里面相关部分的代码,有点小疑惑,写在中文注释部分了,求指导。
代码一:
var util = function(){
var class2Type = {};
var typeArr = "Number String Boolean Array Function RegExp Object Date".split(' ');
for(var i=0,len=typeArr.length; i<len; i++){
var type = typeArr[i];
class2Type['[object '+ type+']'] = type.toLowerCase();
}
return {
type: function(obj){ //jquery里NaN类型没做特殊判断,$.type(NaN)输出为'number',有点不理解
return ( obj == null || isNaN(obj) ) ? String(obj).toLowerCase() :
class2Type[Object.prototype.toString.call(obj)] || 'object';
},
isNumber: function(obj){ //
return this.type(obj) === 'number';
}
};
}();
代码二:
class2type = {};
jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
class2type[ "[object " + name + "]" ] = name.toLowerCase();
});
isNumeric: function( obj ) { //此处若传入参数obj为'1122',结果为true,为何不直接用$.type(obj) === 'number'
return !isNaN( parseFloat(obj) ) && isFinite( obj );
},
type: function( obj ) { //如果参数obj为NaN,$.type(NaN)结果为‘number’,是否有误?
return obj == null ?
String( obj ) :
class2type[ toString.call(obj) ] || "object";
},
时间: 2024-10-12 04:51:30