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

 更新时间:2014年08月28日 09:04:22   投稿:junjie  
这篇文章主要介绍了JavaScript判断变量是对象还是数组的方法,本文分别使用instanceof和typeof实现,需要的朋友可以参考下

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。

相关文章

  • js模糊查询实例分享

    js模糊查询实例分享

    本文主要分享了js模糊查询的实现代码,没有接触到后台数据的知识,只是查询当前表格中每一行所包含的关键字。具有一定的参考价值,需要的朋友一起来看下吧
    2016-12-12
  • JavaScript编码小技巧分享

    JavaScript编码小技巧分享

    这篇文章适合任何一位基于JavaScript开发的开发者。我写这篇文章主要涉及JavaScript中一些简写的代码,帮助大家更好理解一些JavaScript的基础。希望这些代码能从不同的角度帮助你更好的理解JavaScript。
    2020-09-09
  • childNodes.length与children.length的区别

    childNodes.length与children.length的区别

    childNodes.length与children.length的值常不一样。
    2009-05-05
  • 新手快速入门微信小程序组件库 iView Weapp

    新手快速入门微信小程序组件库 iView Weapp

    这篇文章主要介绍了新手快速入门微信小程序组件库 iView Weapp,iView Weapp 提供了与 iView 一致的 UI 和尽可能相同的接口名称,大幅度降低了学习成本,是一套一套高质量的微信小程序 UI 组件库,需要的朋友可以参考下
    2019-06-06
  • JavaScript实现文件下载的超简单两种方式分享

    JavaScript实现文件下载的超简单两种方式分享

    这篇文章主要为大家详细介绍了JavaScript实现文件下载的超简单两种方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • 支持移动端原生js轮播图

    支持移动端原生js轮播图

    这篇文章主要介绍了支持移动端原生js轮播图的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • JavaScript使用FileReader实现图片上传预览效果

    JavaScript使用FileReader实现图片上传预览效果

    这篇文章主要为大家详细介绍了JavaScript使用FileReader实现图片上传预览效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • JS实现图片元素转BASE64编码的简单示例

    JS实现图片元素转BASE64编码的简单示例

    在Web开发中,我们经常需要将图片转换为Base64格式,以便在不依赖外部资源的情况下直接在HTML中使用,在这篇文章中,我将向您展示如何使用JavaScript将图片元素转BASE64编码,需要的朋友可以参考下
    2023-12-12
  • 通过js动态创建标签,并设置属性方法

    通过js动态创建标签,并设置属性方法

    下面小编就为大家分享一篇通过js动态创建标签,并设置属性方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • 炫酷的js手风琴效果

    炫酷的js手风琴效果

    既然JQ和JS都能实现那么炫酷的效果,我们用CSS3能不能做出手风琴效果的书签来呢?这篇文章主要为大家分享了炫酷的手风琴效果实现方式,感兴趣的小伙伴们可以参考一下
    2016-10-10

最新评论