js更精准的判断数据类型

toString 方法

Number.toString()   :     var a=5;     a.toString()  //  "5"

String.toString()    :   var a = "jiji"      a.toString()   // "jiji"

Boolean.toString()   : var a = true;     a.toString()     //"true"

Undefined.toString()   :  var a = undefined ;   a.toString()     // Cannot read property 'toString' of undefined

Null.toString():    var a = null ;    a.toString()      //   Cannot read property 'toString' of undefined

Array.toString()    var a = [];       a.toString()       //   ""

Function.toString()   var a = function(){}     a.toString()     //   "function(){}"

Object.toString()       var a = {}             a.toString()   //   "[object Object]"

Reg.toString()           var a = /^http|https/g        a.toString()    //  "/^http|https/g"

Set.toString()            var a= new Set([1,2])     a.toString()    //  "[object Set]"

注意:目前大家发现 Object.toString,Set.toString方法中会返回数据类型信息,能不能利用这个特性,判断对象的具体类型呢?我们尝试一下:

var _toString = Object.prototype.toString;||var _toString = Set.prototype.toString;
_toString.call(6)         //  "[object Number]"

_toString.call("str")                    //    "[object String]"

_toString.call(true)                    //    "[object Boolean]"

_toString.call(undefined)                    //    "[object Undefined]"

_toString.call(null)                    //    "[object Null]"

_toString.call([])                    //    "[object Array]"

_toString.call(function(){})                    //    "[object Function]"

_toString.call(/^http|https/g)                    //    "[object RegExp]"

_toString.call(new Date())                    //   "[object Date]"

 

当大家详细看完上面的测试后,想想这个有上面用途呢?目前js的typeof判断类型不是很具体,如null和object和array等都是Object,如果想具体判断类型的话,上面的方法是一个最佳的实际方法

喜欢的请关注哦?


版权声明:本文为qq_38694034原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。