现在的位置: 首页 > 综合 > 正文

jQuery源码分析2: jQuery.isFunction

2019年10月30日 ⁄ 综合 ⁄ 共 1228字 ⁄ 字号 评论关闭

jQuery源码分析2: jQuery.isFunction

// [[Class]] -> type pairs
class2type = {};

// Populate the class2type map
jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
class2type[ "[object " + name + "]" ] = name.toLowerCase();
});

var toString = Object.prototype.toString

type: function( obj ) {
    return obj == null ? String( obj ) : class2type[ toString.call(obj) ] || "object";
},

isFunction: function( obj ) {
    return jQuery.type(obj) === "function";
},

jQuery.isFunction用于测试obj是否为函数的对象,其检测的方法是取jQuery.type(obj)是否为"function".

举例说明:

var a = false;
// "object Boolean"
alert(Object.prototype.toString.call(a));

var a = 1;
// "object Number"
alert(Object.prototype.toString.call(a));

var a = "hello world";
// "object String"
alert(Object.prototype.toString.call(a));

var a = function() {};
// "object Function"
alert(Object.prototype.toString.call(a));

var a = [];
// "object Array"
alert(Object.prototype.toString.call(a));

var a = new Date();
// "object Date"
alert(Object.prototype.toString.call(a));

var a = /^\s*|\s*$/;
// "object Date"
alert(Object.prototype.toString.call(a));

var a = {};
// "object Date"
alert(Object.prototype.toString.call(a));

这里有两种特殊的情况
var a;
// "object Undefined"
alert(Object.prototype.toString.call(a));

var a = null;
// "object Null"
alert(Object.prototype.toString.call(a));
不明白,为什么jQuery不把这两种情况跟之前几种合并.

抱歉!评论已关闭.