JavaScript判断一个变量是对象还是数组
来源:互联网 发布:apk编程自动发短信 编辑:程序博客网 时间:2024/05/15 03:15
JavaScript判断一个变量是对象还是数组
typeof都返回object
在JavaScript中所有数据类型严格意义上都是对象,但实际使用中我们还是有类型之分,如果要判断一个变量是数组还是对象使用typeof搞不定,因为它全都返回object
1
2
3
4
5
6
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);
执行:
o typeof is object
a typeof is object
因此,我们只能放弃这种方法,要判断是数组or对象有两种方法
第一,使用typeof加length属性
数组有length属性,object没有,而typeof数组与对象都返回object,所以我们可以这么判断
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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可以判断一个变量是不是数组,如:
1
2
3
4
5
var
o = {
'name'
:
'lee'
};
var
a = [
'reg'
,
'blue'
];
alert( a
instanceof
Array );
// true
alert( o
instanceof
Array );
// false
也可以判断是不是属于object
1
2
3
4
5
var
o = {
'name'
:
'lee'
};
var
a = [
'reg'
,
'blue'
];
alert( a
instanceof
Object );
// true
alert( o
instanceof
Object );
// true
但数组也是属于object,所以以上两个都是true,因此我们要利用instanceof判断数据类型是对象还是数组时应该优先判断array,最后判断object
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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
如果你不优先判断Array,比如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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
那么数组也会被判断为object。
0 0
- JavaScript判断一个变量是对象还是数组
- 判断一个变量类型是数组还是对象
- 判断一个变量类型是数组还是对象
- Javascript中判断变量是 array还是object(是数组还是对象)
- 如何判断变量是数组还是对象
- 判断一个对象是不是JavaScript数组(怎样判断一个变量是数组)
- JavaScript判断变量是否是数组
- 判断一个变量是无符号的还是有符号
- 判断一个变量是无符号的还是有符号
- 判断一个对象是否是数组
- 【自学笔记】 原生JavaScript判断一个变量是否为数组,利用原型对象
- delphi 判断一个数组是用length 还是 sizeof
- js javascript 判断一个变量是否在一个数组中
- 如何判断一个变量是数组Array类型
- 判断一个数组为[]或者对象是{}
- javascript 判断 一个对象是不是 数组的方法
- JavaScript中如何判断一个对象是不是数组
- js判断是函数还是数组
- PostgreSQL连接情况查询
- 什么是脚本语言?什么是编译语言?二者区别在哪?
- 【物联网】使用TI的Bluetooth®低能耗解决方案来区分您的HomeKit产品
- 《ACM程序设计》书中题目B 第二题 fatmouse的语言
- UITextField textInputView: message sent to deallocated instance
- JavaScript判断一个变量是对象还是数组
- 通达OA二次开发 小飞鱼工作流超级修改程序的开发(图文)
- java 单例模式讲解
- Binary String Matching
- K
- python学习笔记(四):字符串(一)
- Head First设计模式学习笔记-------(11)组合模式
- 第5天学习
- Android防止页面跳转后EditText自动获取焦点