全局变量class2type = {};
rdigit = /\d/,//正则判断是否是数字
tostring = object.prototype.tostring;
通过jquery.each,定义class2type的属性和值:
复制代码 代码如下:
jquery.each(boolean number string function array date regexp object.split( ), function(i, name) {
class2type[ [object + name + ] ] = name.tolowercase();
});
type: function( obj ) {
return obj == null ?string( obj ) :class2type[ tostring.call(obj) ] || object;//js 里一切都是对象,所以可以用tostring.call(obj)返回对应对象类型
//如果直接使用这个方法来判断类型的话,ie下document.getelementbyid认为是object,其他浏览器则认为是function
//如果传入的值是nan的话,会返回number
}
isfunction: function( obj ) {return jquery.type(obj) === function;}//在ie下,如果传入document.getelementbyid,返回的是false,ie为它是object
isarray: array.isarray || function( obj ) {return jquery.type(obj) === array;}//如果原生array拥有isarray方法则使用array.isarray,否则自定义这个方法
iswindow: function( obj ) {return obj && typeof obj === object && setinterval in obj;}//判断是否为window对象
isnan: function( obj ) {return obj == null || !rdigit.test( obj ) || isnan( obj );}//
isemptyobject: function( obj ) {
for ( var name in obj ) {//判断的依据是看对象是否有属性或者方法
return false;
}
return true;
}
