jQuery源码分析2: jQuery.isFunction

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值