在JavaScript中,有5種基本數(shù)據(jù)類型和1種復(fù)雜數(shù)據(jù)類型捶牢,基本數(shù)據(jù)類型有:Undefined, Null, Boolean, Number和String;復(fù)雜數(shù)據(jù)類型是Object,Object中還細(xì)分了很多具體的類型掠河,比如:Array, Function, Date等等
JavaScript中檢測(cè)對(duì)象類型的運(yùn)算符有:typeof、instanceof猛计,還有對(duì)象的constructor屬性:?
1) typeof 運(yùn)算符 typeof 是一元運(yùn)算符唠摹,返回結(jié)果是一個(gè)說明運(yùn)算數(shù)類型的字符串。如:"number"奉瘤,"string"勾拉,"boolean","object","function"藕赞,"undefined"(可用于判斷變量是否存在)成肘。 但 typeof 的能力有限,其對(duì)于Date斧蜕、RegExp類型返回的都是"object"双霍。
2)instanceof 運(yùn)算符。 instanceof 運(yùn)算符要求其左邊的運(yùn)算數(shù)是一個(gè)對(duì)象惩激,右邊的運(yùn)算數(shù)是對(duì)象類的名字或構(gòu)造函數(shù)店煞。如果 object 是 class 或構(gòu)造函數(shù)的實(shí)例,則 instanceof 運(yùn)算符返回 true风钻。如果 object 不是指定類或函數(shù)的實(shí)例顷蟀,或者 object 為 null,則返回 false骡技。
var?obj=new?Son();??
alert("obj是否是Son的實(shí)例鸣个???"+(obj?instanceof?Son));//true??
3)constructor 屬性。 JavaScript中布朦,每個(gè)對(duì)象都有一個(gè)constructor屬性囤萤,它引用了初始化該對(duì)象的構(gòu)造函數(shù),常用于判斷未知對(duì)象的類型是趴。如給定一個(gè)求知的值 通過typeof運(yùn)算符來判斷它是原始的值還是對(duì)象涛舍。如果是對(duì)象,就可以使用constructor屬性來判斷其類型唆途。
"John".constructor?????????????????// 返回函數(shù) String()? { [native code] }
(3.14).constructor?????????????????// 返回函數(shù) Number()? { [native code] }
false.constructor??????????????????// 返回函數(shù) Boolean() { [native code] }
[1,2,3,4].constructor??????????????// 返回函數(shù) Array()?? { [native code] }
{name:'John', age:34}.constructor??// 返回函數(shù) Object()? { [native code] }
new?Date().constructor?????????? ??// 返回函數(shù) Date()? ? { [native code] }
function?() {}.constructor ????????// 返回函數(shù) Function(){ [native code] }
4富雅、使用Object.prototype.toString.call
Object.prototype.toString.call(str),? ?//object string
?Object.prototype.toString.call(bool), //object Boolean
從輸出的結(jié)果來看,Object.prototype.toString.call(變量)輸出的是一個(gè)字符串肛搬,字符串里有一個(gè)數(shù)組没佑,第一個(gè)參數(shù)是Object,第二個(gè)參數(shù)就是這個(gè)變量的類型温赔,而且蛤奢,所有變量的類型都檢測(cè)出來了,我們只需要取出第二個(gè)參數(shù)即可陶贼∑》罚或者可以使用Object.prototype.toString.call(arr)=="object Array"來檢測(cè)變量arr是不是數(shù)組。
5. jquery中$.type的實(shí)現(xiàn)
在jquery中提供了一個(gè)$.type的接口拜秧,來讓我們檢測(cè)變量的類型