JavaScript和jQuery的类型判断

此博文为原创,转载请注明出处!数组

对于类型的判断,JavaScript用typeof来进行。工具

栗子:spa

console.log(typeof null);            //object
console.log(typeof []);              //object
console.log(typeof {});              //object
console.log(typeof new Date());      //object
console.log(typeof new Object);      //object
console.log(typeof function(){});    //function
console.log(typeof alert);           //function
console.log(typeof 1);               //number
console.log(typeof "abc");           //string
console.log(typeof true);            //boolean

能够看到,typeof并不可以准确的判断出每一种数据类型,好比null和数组等都是object类型。所以,JavaScript判断数据类型不推荐使用typeof。code

那么要如何具体判断呢??看一下语法<( ̄3 ̄)> !blog

{}.toString.call(obj);

栗子:ip

console.log({}.toString.call(null));            //[object Null]
console.log({}.toString.call([]));              //[object Array]
console.log({}.toString.call({}));              //[object Object]
console.log({}.toString.call(new Date()));      //[object Date]
console.log({}.toString.call(function(){}));    //[object Function]
console.log({}.toString.call(new Object));      //[object Object]
console.log({}.toString.call(alert));           //[object Function]
console.log({}.toString.call(1));               //[object Number]
console.log({}.toString.call('abc'));           //[object String]
console.log({}.toString.call(true));            //[object Boolean]

哈哈,是否是一目了然呀!!源码

那若是你用的是jQuery,就不用这么麻烦喽,能够直接用工具方法$.type(),进行判断string

栗子:io

console.log($.type(null));                  //null
console.log($.type([]));                    //array
console.log($.type({}));                    //object
console.log($.type(1));                     //number
......不全写完了,结果和
{}.toString.call(obj);是同样的
实际上{}.toString.call(obj);就是jQuery中$.type()这个工具方法的实现最重要的一段代码(⊙o⊙)哦,神奇吧!赶快去jQuery源码中找找看吧~~

若是哪里写的有问题,欢迎各路大神指正!
相关文章
相关标签/搜索