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


Posted in Javascript onApril 01, 2015

为什么要用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 相关文章推荐
WordPress 照片lightbox效果的运用几点
Jun 22 Javascript
js 获取中文拼音,Select自动匹配字母获取值的代码
Sep 23 Javascript
基于jquery的固定表头和列头的代码
May 03 Javascript
jQuery中document与window以及load与ready 区别详解
Dec 29 Javascript
jquery插件corner实现圆角边框的方法
Mar 09 Javascript
js实现点击链接后延迟3秒再跳转的方法
Jun 05 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
Nov 30 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
Jun 13 Javascript
Vue中父组件向子组件通信的方法
Jul 11 Javascript
详解vue-property-decorator使用手册
Jul 29 Javascript
微信小程序 调用远程接口 给全局数组赋值代码实例
Aug 13 Javascript
JS模拟实现京东快递单号查询
Nov 30 Javascript
JavaScript判断是否为数组的3种方法及效率比较
Apr 01 #Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
Apr 01 #Javascript
JavaScript判断是否为数字的4种方法及效率比较
Apr 01 #Javascript
JavaScript操作DOM元素的childNodes和children区别
Apr 01 #Javascript
JS使用oumousemove和oumouseout动态改变图片显示的方法
Mar 31 #Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
Mar 31 #Javascript
JS显示下拉列表框内全部元素的方法
Mar 31 #Javascript
You might like
FleaPHP的安全设置方法
2008/09/15 PHP
用php实现的获取网页中的图片并保存到本地的代码
2010/01/05 PHP
ThinkPHP之A方法实例讲解
2014/06/20 PHP
PHP共享内存用法实例分析
2016/02/12 PHP
Zend Framework动作助手FlashMessenger用法详解
2016/03/05 PHP
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
JavaScript排序算法之希尔排序的2个实例
2014/04/04 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
JavaScript中输出标签的方法
2014/08/27 Javascript
JavaScript实现简单获取当前网页网址的方法
2015/11/09 Javascript
整理JavaScript对DOM中各种类型的元素的常用操作
2016/05/05 Javascript
jQuery多个版本和其他js库冲突的解决方法
2016/08/11 Javascript
Vue 2.0学习笔记之Vue中的computed属性
2017/10/16 Javascript
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
JS实现电脑虚拟键盘打字测试
2020/06/24 Javascript
[01:52]DOTA2完美大师赛Vega战队趣味视频——kpii老师小课堂
2017/11/25 DOTA
[01:04:20]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.29
2020/12/02 DOTA
python+mysql实现简单的web程序
2014/09/11 Python
Python中的类学习笔记
2014/09/23 Python
Python类的定义、继承及类对象使用方法简明教程
2015/05/08 Python
在Python中用split()方法分割字符串的使用介绍
2015/05/20 Python
Python实现时钟显示效果思路详解
2018/04/11 Python
Python中的Numpy矩阵操作
2018/08/12 Python
Django 实现前端图片压缩功能的方法
2019/08/07 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
2020/09/28 Python
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
阿联酋优惠券服务:Living Kool
2019/12/12 全球购物
毕业自我鉴定
2013/11/05 职场文书
会计自荐书
2013/12/02 职场文书
家居装修公司创业计划书范文
2014/03/20 职场文书
上甘岭观后感
2015/06/10 职场文书
《水浒传》读后感3篇(范文)
2019/09/19 职场文书
Windows中Redis安装配置流程并实现远程访问功能
2021/06/07 Redis
Mysql关于数据库是否应该使用外键约束详解说明
2021/10/24 MySQL