大家可以看到typeof能检测到js的6挺主题类型中之5单,即String,Boolean,Number,Undefined,Object
 其中null被归为了Object把Function单独将了出去,基本上仍可以够一气呵成任务之,但这是对此复合类型而言就无法进一步区分了,比如到底是数组依旧对象为?这多少个时段便能够采用另外一个操作符instanceOf了

 

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

 

    var data=[],a='123',b=0,c=true,d={1:23},e=[123],f=function(){},g=null,h=undefined,i=Math,j=/$.+^/,k= new Date();
    data.push(a,b,c,d,e,f,g,h,i,j,k);
    for(var key=0;key<data.length;key++){
            console.log(data[key]+'的检测结果是' +$.type(data[key]));
    }

 

四、Object.prototype.toString方法

运作结果:

归来的结果就如在此之前测试了之结果类似
 [object Date]这样的
假若不克博取到即回去object,结果作class2type的键,下边来拘禁下class2type的概念:

 

//123的数据类型是string

// 0的数据类型是number

// true的数据类型是boolean

//[object Object]的数据类型是object

//123的数据类型是object

// function (){}的数据类型是function

//undefined的数据类型是undefined

// [object Math]的数据类型是object

// /$.+^/的数据类型是object

// Wed Jul 22 2015 15:47:25 GMT+0800 (中国标准时间)的数据类型是object
var data=[],a='123',b=0,c=true,d={1:23},e=[123],f=function(){},g=null,h=undefined,i=Math,j=/$.+^/,k= new Date();
data.push(a,b,c,d,e,f,g,h,i,j,k);

for(var key=0;key<data.length;key++){
     console.log(data[key]+'的数据类型是'+typeof data[key]);
}

 

 

//123的检测结果是[object String]

//0的检测结果是[object Number]

//true的检测结果是[object Boolean]

//[object Object]的检测结果是[object Object]

//123的检测结果是[object Array]

//function (){}的检测结果是[object Function]

//null的检测结果是[object Null]

//undefined的检测结果是[object Undefined]

//[object Math]的检测结果是[object Math]

///$.+^/的检测结果是[object RegExp]

//Wed Jul 22 2015 16:33:05 GMT+0800 (中国标准时间)的检/测结果是[object Date]

运转结果如下:

以浏览器被的运作结果如下:

 

平的勾勒一段落测试代码

jQuery.type方法是检测数据列的家伙方法,在解析其用法此前先总计下js给我们提供了这一个监测数据类型的主意;

 

 

 

var data=[],a='123',b=0,c=true,d={1:23},e=[123],f=function(){},g=null,h=undefined,i=Math,j=/$.+^/,k= new Date();
data.push(a,b,c,d,e,f,g,h,i,j,k);
console.log(a instanceof String);
console.log(b instanceof Number);
console.log(c instanceof Boolean);
console.log(d instanceof Object);
console.log(e instanceof Array);
console.log(f instanceof Function);
console.log(j instanceof RegExp);
console.log(k instanceof Date);
// Populate the class2type map
jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
    class2type[ "[object " + name + "]" ] = name.toLowerCase();
});
    var data=[],a='123',b=0,c=true,d={1:23},e=[123],f=function(){},g=null,h=undefined,i=Math,j=/$.+^/,k= new Date();
    data.push(a,b,c,d,e,f,g,h,i,j,k);
    for(var key=0;key<data.length;key++){
            console.log(data[key]+'的检测结果是' +Object.prototype.toString.call(data[key]));
    }

 

 

 

 

视结果是无是发甚凉爽!不仅可检测及具备数据类型,而且把Object子类型也切实了下,也不用担心报错,之所以可以实现是坐有的目标都是基于Object而来的,其实jQery也是应用的斯主意,只但是是举办了更处理给大家看在更爽而一度!

toString = Object.prototype.toString,

拖欠方法通过调用待测试数据的toString方法来拿到其构造函数的字符串表示,测试代码如下:

三、constructor属性

// false
// false
// true
// true
// true
// true
// true

 

倘是undefined或者是null他们的多寡累类型就是友好,直接回到字符串格局,淌倘若其他数就是尽toString方法,该格局在此以前起介绍

于地点的代码中自我尽可能列举了js不同的数据类型和目标,执行结果如下:

 

一、typeof 操作符

运作结果如下:

其中null调用是会报错所以加了try语句,相对而言之格局会生有利的取其构造函数,这样虽可知看清了,遗憾之凡拖欠属性并非是光念属性是可以吃改动的,一旦为改或关联到目的继承等问题时会促成不准而以撞一些值得时候会报错导致程序无法运行论null,还爆发无发出其余方呢?

//123的检测结果是string

//0的检测结果是number

//的检测结果是boolean

//[object Object]的检测结果是object

//123的检测结果是array

//function (){}的检测结果是function

//null的检测结果是null

//undefined的检测结果是undefined

//[object Math]的检测结果是object

///$.+^/的检测结果是regexp

//Wed Jul 22 2015 16:44:25 GMT+0800 (中国标准时间)的检测结果是date

下边是测试代码

 

哼了type方法分析了。

 

二、instanceOf操作符

//123的检测结果是function String() { [native code] }

//0的检测结果是function Number() { [native code] }

//true的检测结果是function Boolean() { [native code] }

//[object Object]的检测结果是function Object() { [native code] }

//123的检测结果是function Array() { [native code] }

//function (){}的检测结果是function Function() { [native code] }

//[object Math]的检测结果是function Object() { [native code] }

///$.+^/的检测结果是function RegExp() { [native code] }
//Wed Jul 22 2015 16:23:41 GMT+0800 (中国标准时间)的检测结果是function Date() { [native code] }
var data=[],a='123',b=0,c=true,d={1:23},e=[123],f=function(){},g=null,h=undefined,i=Math,j=/$.+^/,k= new Date();
 data.push(a,b,c,d,e,f,g,h,i,j,k);
 for(var key=0;key<data.length;key++){
       try{
            console.log(data[key]+'的检测结果是' +data[key].constructor);
        }catch(e){

        }
    }

省用jQuery.type的结果

足见见唯有复合类型的结果吗实在,而且必须确保项目是各样对应之,显著是法只可以开只一样验证方法是,并无能够以我们不晓得具体数据类型的时光去做判定,可以视作typeof的一个相助测试手段

同样的优先勾勒下测试代码

ok,结果对了,下边附上源码:

相关文章

网站地图xml地图