jQuery中 type()源码分析

alert( {}.toString.call(new Date) );//[object Date]
alert( {}.toString.call([]) );      //[object Array]
alert( {}.toString.call(new RegExp) );//[object RegExp]
alert( {}.toString.call(new Function) );//[object Function]
alert( {}.toString.call(new Boolean) );//[object Boolean]
alert( {}.toString.call({}) );//[object Object]
class2type = {},
core_toString = class2type.toString,
type: function( obj ) {
	当obj为undefined或null时,直接返回obj的值
		if ( obj == null ) {
			return String( obj );
		}
		// Support: Safari <= 5.1 (functionish RegExp)
		//当obj的类型为object或function时,执行class2type[ core_toString.call(obj) ] || "object"
		//否则执行 typeof obj
		return typeof obj === "object" || typeof obj === "function" ?
			class2type[ core_toString.call(obj) ] || "object" :
			typeof obj;
	},
	
//class2type[ "[object Array]" ] = array
jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
	class2type[ "[object " + name + "]" ] = name.toLowerCase();
});

class2type:{
[object Array]: "array",
[object Boolean]: "boolean",
[object Date]: "date",
[object Error]: "error",
[object Function]: "function",
[object Number]: "number",
[object Object]: "object",
[object RegExp]: "regexp",
[object String]: "string"}



你可能感兴趣的:(jQuery)