关闭

jQuery源码分析2: jQuery.isFunction

764人阅读 评论(0) 收藏 举报
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不把这两种情况跟之前几种合并.
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:989160次
    • 积分:13805
    • 等级:
    • 排名:第903名
    • 原创:332篇
    • 转载:403篇
    • 译文:27篇
    • 评论:42条
    新浪微博 @billfeller