jquery学習ノート1:データ型判断の小さな疑問

3242 ワード

暇なときにjqueryを学びたいと思って、jquery(1.7.2)のソースコードをすり抜けて、先頭の前のツール関数を見て、データ型を判断するのにとても実用的なものがあって、思い切って取り出して使います.
次の2つのコードは、次のとおりです.
(1)自分がjqueryから取り出したコードを,適宜修正した.
(2)jqueryの中の関連部分のコード、少し疑問に思って、中国語の注釈部分に書いて、指導を求めます.
コード1:
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';

        }

    };

}();

 
コード2:
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"; },