JS的各种数据类型判断

JS的各种数据类型判断

1.typeof

typeof 用来判断各种数据类型,有两种写法:typeof xxx , typeof(xxx)
例如:

 typeof     2      输出   number
 typeof     null   输出   object
 typeof     {}     输出   object
 typeof     []     输出   object
 typeof   (function(){})   输出    function
 typeof    undefined       输出    undefined
 typeof     '222'          输出    string
 typeof    true            输出    boolean

这里面包含了js里面的五种数据类型 number、string、boolean、 undefinedobject 和函数类型 function



2. instanceof

判断已知对象类型的方法.instanceof 后面一定要是对象类型,并且大小写不能错,该方法适合一些条件选择或分支。

var c= [1,2,3];
var d = new Date();
var e = function(){alert(111);};
var f = function(){this.name="22";};

alert(c instanceof Array) ---------------> true
alert(d instanceof Date)  ---------------> true
alert(e instanceof Function) ------------> true
alert(f instanceof function) ------------> false



3.constructor

根据对象的constructor判断,返回对创建此对象的数组函数的引用。

var c= [1,2,3];
var d = new Date();
var e = function(){alert(111);};

alert(c.constructor === Array) ----------> true
alert(d.constructor === Date) -----------> true
alert(e.constructor === Function) -------> true

//注意: constructor 在类继承时会出错



4.prototype

所有数据类型均可判断:Object.prototype.toString.call
这是对象的一个原生原型扩展函数,用来更精确的区分数据类型。

var   gettype=Object.prototype.toString

gettype.call('aaaa')        输出      [object String]

gettype.call(2222)          输出      [object Number]

gettype.call(true)          输出      [object Boolean]

gettype.call(undefined)     输出      [object Undefined]

gettype.call(null)          输出      [object Null]

gettype.call({})            输出      [object Object]

gettype.call([])            输出      [object Array]

gettype.call(function(){})     输出   [object Function]



其实js 里面还有好多类型判断 [object HTMLDivElement] div 对象 , [object HTMLBodyElement] body 对象 ,[object Document](IE)或者 [object HTMLDocument](firefox,google) ……各种dom节点的判断,这些东西在我们写插件的时候都会用到。

 可以封装的方法如下  :
var  gettype=Object.prototype.toString

var  utility={

   isObj:function(o){
       return    gettype.call(o)=="[object Object]";
   },

   isArray:function(o){
       return    gettype.call(o)=="[object Array]";
   },

   isNULL:function(o){
       return    gettype.call(o)=="[object Null]";
   },

   isDocument:function(){
       return  gettype.call(o)=="[object Document]"|| [object HTMLDocument];
    }
   ........
    }

猜你喜欢

转载自blog.csdn.net/chenjuan1993/article/details/82224352