JavaScript判断变量是对象还是数组的方法


Posted in Javascript onAugust 28, 2014

typeof都返回object

在JavaScript中所有数据类型严格意义上都是对象,但实际使用中我们还是有类型之分,如果要判断一个变量是数组还是对象使用typeof搞不定,因为它全都返回object

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,所以我们可以这么判断

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可以判断一个变量是不是数组,如:

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

但数组也是属于object,所以以上两个都是true,因此我们要利用instanceof判断数据类型是对象还是数组时应该优先判断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

如果你不优先判断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

那么数组也会被判断为object。
Javascript 相关文章推荐
jQuery UI 实现email输入提示实例
Aug 15 Javascript
jQuery设置与获取HTML,文本和值的简单实例
Feb 26 Javascript
IE浏览器IFrame对象内存不释放问题解决方法
Aug 22 Javascript
JavaScript中的getTime()方法使用详解
Jun 10 Javascript
jquery删除table当前行的实例代码
Oct 07 Javascript
js for循环倒序输出数组元素的实例
Mar 01 Javascript
Angular在模板驱动表单中自定义校验器的方法
Aug 09 Javascript
微信小程序实现手势图案锁屏功能
Jan 30 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
Aug 23 Javascript
koa-passport实现本地验证的方法示例
Feb 20 Javascript
解决在Vue中使用axios POST请求变成OPTIONS的问题
Aug 14 Javascript
解决Antd Table表头加Icon和气泡提示的坑
Nov 17 Javascript
分享一个自己动手写的jQuery分页插件
Aug 28 #Javascript
jQuery标签替换函数replaceWith()的使用例子
Aug 28 #Javascript
jQuery焦点图切换简易插件制作过程全纪录
Aug 27 #Javascript
javascript正则表达式参数/g与/i及/gi的使用指南
Aug 27 #Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
Aug 27 #Javascript
JavaScript实现的in_array函数
Aug 27 #Javascript
JavaScript AJAX之惰性载入函数
Aug 27 #Javascript
You might like
百度地图经纬度转换到腾讯地图/Google 对应的经纬度
2015/08/28 PHP
PHP共享内存使用与信号控制实例分析
2018/05/09 PHP
innerHTML 和 getElementsByName 在IE下面的bug 的解决
2010/04/09 Javascript
JavaScript的document对象和window对象详解
2010/12/30 Javascript
jquery中ajax学习笔记3
2011/10/16 Javascript
javascript 使用 NodeList需要注意的问题
2013/03/04 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
sails框架的学习指南
2014/12/22 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
bootstrap网格系统使用方法解析
2017/01/13 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
vue-router单页面路由
2017/06/17 Javascript
详解vue组件通信的三种方式
2017/06/30 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
Node如何后台数据库使用增删改查功能
2019/11/21 Javascript
Python3读取文件常用方法实例分析
2015/05/22 Python
Python的Django框架中TEMPLATES项的设置教程
2015/05/29 Python
Python File readlines() 使用方法
2018/03/19 Python
python之DataFrame实现excel合并单元格
2021/02/22 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
2020/01/04 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
美国领先的汽车轮胎和轮毂供应商:TireBuyer
2016/07/21 全球购物
美国知名女性服饰品牌:New York & Company
2017/03/23 全球购物
临床医学专业个人的自我评价
2013/09/27 职场文书
英语专业学生个人求职信范文
2014/01/06 职场文书
表扬信格式
2014/01/12 职场文书
加工操作管理制度
2014/01/19 职场文书
总经理岗位职责描述
2014/02/08 职场文书
2014年迎新年活动方案
2014/02/19 职场文书
学校爱心捐款倡议书
2014/05/13 职场文书
改革共识倡议书
2014/08/29 职场文书
纪录片信仰观后感
2015/06/08 职场文书
老人与海读书笔记
2015/06/26 职场文书
2016大学迎新欢迎词
2015/09/29 职场文书
TypeScript中条件类型精读与实践记录
2021/10/05 Javascript