jquery学习笔记一:数据类型判断 之 小疑惑

本文深入探讨了jQuery中数据类型判断的实现方式,对比了自定义函数与jQuery原生方法的区别,特别关注了对NaN类型的处理差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

闲来无事想学下jquery,就扒了下jquery(1.7.2)的源码,看到开头前面的工具函数,有个判断数据类型的挺实用的,就果断摘出来用。

下面两段代码,分别为:

(1)自己从jquery里摘出来的代码,适当修改了下。

(2)jquery里面相关部分的代码,有点小疑惑,写在中文注释部分了,求指导。

 代码一:

var util = function(){
    var class2Type = {};
    var typeArr = "Number String Boolean Array Function RegExp Object Date".split(' ');
    for(var i=0,len=typeArr.length; i<len; i++){
        var type = typeArr[i];
        class2Type['[object '+ type+']'] = type.toLowerCase();
    }
    return {
        type: function(obj){  //jquery里NaN类型没做特殊判断,$.type(NaN)输出为'number',有点不理解
            return ( obj == null || isNaN(obj) ) ? String(obj).toLowerCase() : 
                                                    class2Type[Object.prototype.toString.call(obj)] || 'object';
        },
        isNumber: function(obj){  //
            return this.type(obj) === 'number';
        }
    };
}();

 

代码二:

class2type = {};
jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
    class2type[ "[object " + name + "]" ] = name.toLowerCase();
});
isNumeric:
function( obj ) {  //此处若传入参数obj为'1122',结果为true,为何不直接用$.type(obj) === 'number' return !isNaN( parseFloat(obj) ) && isFinite( obj ); },
type:
function( obj ) {  //如果参数obj为NaN,$.type(NaN)结果为‘number’,是否有误? return obj == null ? String( obj ) : class2type[ toString.call(obj) ] || "object"; },

转载于:https://www.cnblogs.com/chyingp/archive/2012/07/23/2605758.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值