用typeof可以來判斷類型但并不準(zhǔn)確米奸,如下圖(返回字符串表示數(shù)據(jù)的類型)
1、從構(gòu)造函數(shù)入手
instanceof?運(yùn)算符用來測試一個對象在其原型鏈中是否存在一個構(gòu)造函數(shù)的?prototype?屬性悴晰,返回一個布爾值逐工。
2、從原型入手棕硫, Array.prototype.isPrototypeOf(obj)
利用isPrototypeOf()方法,判定Array是不是在obj的原型鏈中袒啼,如果是纬纪,則返回true,否則false滑肉。
3、js已經(jīng)提供了一個Array.isArray()方法來判斷是不是數(shù)組
當(dāng)檢測Array實(shí)例時,?Array.isArray?優(yōu)于?instanceof,因?yàn)锳rray.isArray能檢測iframes.
假如不存在 Array.isArray()靶庙,則在其他代碼之前運(yùn)行下面的代碼將創(chuàng)建該方法。
if(!Array.isArray){
????Array.isArray=function(arg){
????????returnObject.prototype.toString.call(arg)==='[object Array]';
????};
}
4六荒、 使用toString()檢測對象類型
每個對象都有一個toString()方法,當(dāng)該對象被表示為一個文本值時卵皂,或者一個對象以預(yù)期的字符串方式引用時自動調(diào)用铐料。默認(rèn)情況下渐裂,toString()方法被每個Object對象繼承钠惩。如果此方法在自定義對象中未被覆蓋,toString()?返回?"[object?type]"篓跛,其中type是對象的類型膝捞。