JavaScript判斷變量是對(duì)象還是數(shù)組的方法
typeof都返回object
在JavaScript中所有數(shù)據(jù)類型嚴(yán)格意義上都是對(duì)象,但實(shí)際使用中我們還是有類型之分,如果要判斷一個(gè)變量是數(shù)組還是對(duì)象使用typeof搞不定,因?yàn)樗挤祷豲bject
var o = { 'name':'lee' };
var a = ['reg','blue'];
document.write( ' o typeof is ' + typeof o);
document.write( ' <br />');
document.write( ' a typeof is ' + typeof a);
執(zhí)行:
o typeof is object
a typeof is object
因此,我們只能放棄這種方法,要判斷是數(shù)組or對(duì)象有兩種方法
第一,使用typeof加length屬性
數(shù)組有l(wèi)ength屬性,object沒(méi)有,而typeof數(shù)組與對(duì)象都返回object,所以我們可以這么判斷
var o = { 'name':'lee' };
var a = ['reg','blue'];
var getDataType = function(o){
if(typeof o == 'object'){
if( typeof o.length == 'number' ){
return 'Array';
}else{
return 'Object';
}
}else{
return 'param is no object type';
}
};
alert( getDataType(o) ); // Object
alert( getDataType(a) ); // Array
alert( getDataType(1) ); // param is no object type
alert( getDataType(true) ); // param is no object type
alert( getDataType('a') ); // param is no object type
第二,使用instanceof
使用instanceof可以判斷一個(gè)變量是不是數(shù)組,如:
var o = { 'name':'lee' };
var a = ['reg','blue'];
alert( a instanceof Array ); // true
alert( o instanceof Array ); // false
也可以判斷是不是屬于object
var o = { 'name':'lee' };
var a = ['reg','blue'];
alert( a instanceof Object ); // true
alert( o instanceof Object ); // true
但數(shù)組也是屬于object,所以以上兩個(gè)都是true,因此我們要利用instanceof判斷數(shù)據(jù)類型是對(duì)象還是數(shù)組時(shí)應(yīng)該優(yōu)先判斷array,最后判斷object
var o = { 'name':'lee' };
var a = ['reg','blue'];
var getDataType = function(o){
if(o instanceof Array){
return 'Array'
}else if( o instanceof Object ){
return 'Object';
}else{
return 'param is no object type';
}
};
alert( getDataType(o) ); // Object
alert( getDataType(a) ); // Array
alert( getDataType(1) ); // param is no object type
alert( getDataType(true) ); // param is no object type
alert( getDataType('a') ); // param is no object type
如果你不優(yōu)先判斷Array,比如:
var o = { 'name':'lee' };
var a = ['reg','blue'];
var getDataType = function(o){
if(o instanceof Object){
return 'Object'
}else if( o instanceof Array ){
return 'Array';
}else{
return 'param is no object type';
}
};
alert( getDataType(o) ); // Object
alert( getDataType(a) ); // Object
alert( getDataType(1) ); // param is no object type
alert( getDataType(true) ); // param is no object type
alert( getDataType('a') ); // param is no object type
那么數(shù)組也會(huì)被判斷為object。
相關(guān)文章
微信小程序使用wx.request請(qǐng)求服務(wù)器json數(shù)據(jù)并渲染到頁(yè)面操作示例
這篇文章主要介紹了微信小程序使用wx.request請(qǐng)求服務(wù)器json數(shù)據(jù)并渲染到頁(yè)面操作,結(jié)合實(shí)例形式分析了微信小程序使用wx.request發(fā)送網(wǎng)絡(luò)請(qǐng)求及返回結(jié)果渲染到wxml界面相關(guān)操作技巧,需要的朋友可以參考下2019-03-03
JavaScript檢查數(shù)據(jù)中是否存在相同的元素(兩種方法)
這篇文章主要介紹了JavaScript檢查數(shù)據(jù)中是否存在相同的元素(兩種方法),需要的朋友可以參考下2018-10-10
arcgis for js 修改infowindow樣式的方法
下面小編就為大家?guī)?lái)一篇arcgis for js 修改infowindow樣式的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11
分享十八個(gè)殺手級(jí)JavaScript單行代碼
這篇文章主要給大家分享了十八個(gè)殺手級(jí)JavaScript單行代碼,這些單行代碼可以幫助你提高工作效率并可以幫助調(diào)試代碼,對(duì)大家學(xué)習(xí)或者使用JavaScript具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-10-10
js實(shí)現(xiàn)購(gòu)物網(wǎng)站放大鏡功能
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)購(gòu)物網(wǎng)站放大鏡功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06

