JavaScript中使用Object.prototype.toString判断是否为数组

 更新时间:2015年04月01日 09:28:36   投稿:junjie  
这篇文章主要介绍了JavaScript中使用Object.prototype.toString判断是否是数组,本文讲解了Object.prototype.toString相关知识,并给出了判断数组的实现代码,使用本文方法同样可以判断javascrpty的其它数据类型,需要的朋友可以参考下

为什么要用Object.prototype.toString而不是Function.prototype.toString或者其它?这是和他们的toString解释方式有关系的。下面是ECMA中对Object.prototype.toString的解释:

复制代码 代码如下:

Object.prototype.toString( )

When the toString method is called, the following steps are taken:
1. Get the [[Class]] property of this object.
2. Compute a string value by concatenating the three strings “[object “, Result (1), and “]”.
3. Return Result (2)


其过程简单说来就是:1、获取对象的类名(对象类型)。2、然后将[object、获取的类名、]组合并返回。
ECMA中对Array有如下说明:
复制代码 代码如下:

The [[Class]] property of the newly constructed object is set to “Array”.

因此我们用如下代码来检测数组:
复制代码 代码如下:

function isArray(o) {   return Object.prototype.toString.call(o) === '[object Array]';  } 

这种方式既解决了instanceof存在的跨页面问题,也解决了属性检测方式所存在的问题,实在是一种妙招,一个很好的解决方案。
除此之外,这种解决办法也可以应用于判断Date,Function等类型的对象。
 
另外还有几个方法:
复制代码 代码如下:

var arr = []; return arr instanceof Array; 

如果有其他好的方法不妨贴出来。

相关文章

  • JavaScript深入刨析this的指向以及如何修改指向

    JavaScript深入刨析this的指向以及如何修改指向

    JavaScript中this也是一件很神奇 事情,在面向对象(比如java)中表示一个当前的对象引用,但是在JavaScript中this不是固定不变的,而是随着运行环境的改变而改变
    2021-11-11
  • JS排序之冒泡排序详解

    JS排序之冒泡排序详解

    这篇文章主要为大家详细介绍了JS冒泡排序的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • setTimeout在类中使用的问题!

    setTimeout在类中使用的问题!

    setTimeout在类中使用的问题!...
    2007-04-04
  • Javascript中innerHTML用法实例分析

    Javascript中innerHTML用法实例分析

    这篇文章主要介绍了Javascript中innerHTML用法,实例分析了实用innerHTML获取对应元素内容的使用技巧,需要的朋友可以参考下
    2015-01-01
  • JS 实现随机验证码功能

    JS 实现随机验证码功能

    验证码验证是网页常出现的一个验证点,所谓验证码类型有很多,下面代码只是实现一个简单的验证功能,需要的朋友参考下
    2017-02-02
  • js精准的倒计时函数分享

    js精准的倒计时函数分享

    这篇文章主要为大家分享了js实现精准的倒计时函数,如何实现倒计时模块,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • js+canvas实现两张图片合并成一张图片的方法

    js+canvas实现两张图片合并成一张图片的方法

    这篇文章主要介绍了js+canvas实现两张图片合并成一张图片的方法,结合实例形式分析了JavaScript结合HTML5 canvas实现图片合并的操作技巧,并附带了Java图片合并的实现方法,需要的朋友可以参考下
    2019-11-11
  • Javascript学习笔记 delete运算符

    Javascript学习笔记 delete运算符

    关于javascript的delete运算符,MDN里有相关文档。以下是我的学习笔记,更多是要关注特殊情况的使用和注意点。
    2011-09-09
  • Extjs 点击复选框在表格中增加相关信息行

    Extjs 点击复选框在表格中增加相关信息行

    这篇文章主要介绍了Extjs 点击复选框在表格中增加相关信息行 的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • 微信小程序实现列表滚动头部吸顶的示例代码

    微信小程序实现列表滚动头部吸顶的示例代码

    这篇文章主要介绍了微信小程序实现列表滚动头部吸顶的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07

最新评论