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 相关文章推荐
延时重复执行函数 lLoopRun.js
May 08 Javascript
Extjs407 getValue()和getRawValue()区别介绍
May 21 Javascript
jQuery/CSS3图片特效插件整理推荐
Dec 07 Javascript
kindeditor修复会替换script内容的问题
Apr 03 Javascript
JS实现的车标图片提示效果代码
Oct 10 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
Jun 21 Javascript
js获取上传文件的绝对路径实现方法
Aug 02 Javascript
详解Angular路由 ng-route和ui-router的区别
May 22 Javascript
node实现简单的反向代理服务器
Jul 26 Javascript
使用Angular-CLI构建NPM包的方法
Sep 07 Javascript
Angular Excel 导入与导出的实现代码
Apr 17 Javascript
微信小程序scroll-view的滚动条设置实现
Mar 02 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
PHP新手上路(三)
2006/10/09 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
2014/09/10 PHP
php计算给定时间之前的函数用法实例
2015/04/03 PHP
php使用get_class_methods()函数获取分类的方法
2016/07/20 PHP
JavaScript实现动态增加文件域表单
2009/02/12 Javascript
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
javascript批量修改文件编码格式的方法
2015/01/27 Javascript
JavaScript中数据结构与算法(二):队列
2015/06/19 Javascript
js+css实现上下翻页相册代码分享
2015/08/18 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
js编写当天简单日历效果【实现代码】
2016/05/03 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
2016/09/05 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
2016/11/02 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
2016/12/24 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
2016/12/31 Javascript
vue实现微信分享功能
2018/11/28 Javascript
JS用最简单的方法实现四舍五入
2019/08/27 Javascript
jquery实现拖拽小方块效果
2020/12/10 jQuery
原生JS实现拖拽功能
2020/12/16 Javascript
Python的Django框架中的select_related函数对QuerySet 查询的优化
2015/04/01 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
2017/11/01 Python
通过python+selenium3实现浏览器刷简书文章阅读量
2017/12/26 Python
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
Python编程深度学习计算库之numpy
2018/12/28 Python
优秀英语专业毕业生求职信
2013/11/23 职场文书
政法大学毕业生自荐信范文
2014/01/01 职场文书
授权委托书怎么写
2014/04/03 职场文书
不服从上级领导安排的检讨书
2014/09/14 职场文书
法人委托书范本格式
2014/09/15 职场文书
政府领导干部个人对照检查材料思想汇报
2014/09/24 职场文书
2014年销售部工作总结
2014/12/01 职场文书
员工年度工作总结2015
2015/05/18 职场文书
十一月早安语录:把心放轻,人生就是一朵自在的云
2019/11/04 职场文书
Vue监视数据的原理详解
2022/02/24 Vue.js
Mysql超详细讲解死锁问题的理解
2022/04/01 MySQL