對(duì)于類型的判斷,JavaScript用typeof來進(jìn)行。而jQuery就要方便的多,希望這篇文章對(duì)學(xué)習(xí)jQuery的同學(xué)有幫助。
栗子:
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并不能夠準(zhǔn)確的判斷出每一種數(shù)據(jù)類型,比如null和數(shù)組等都是object類型。因此,JavaScript判斷數(shù)據(jù)類型不推薦使用typeof。
那么要如何具體判斷呢??看一下語法<( ̄3 ̄)> !
{}.toString.call(obj);
栗子:
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(),進(jìn)行判斷
栗子:
console.log($.type(null)); //null
console.log($.type([])); //array
console.log($.type({})); //object
console.log($.type(1)); //number
......不全寫完了,結(jié)果和{}.toString.call(obj);是一樣的
實(shí)際上{}.toString.call(obj);就是jQuery中$.type()這個(gè)工具方法的實(shí)現(xiàn)最重要的一段代碼(⊙o⊙)哦
文章來自:博客園/晴晴加油