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 相关文章推荐
用户注册常用javascript代码
Aug 29 Javascript
js中split函数的使用方法说明
Dec 26 Javascript
jquery选择checked在ie8普通模式下的问题
Feb 12 Javascript
jquery.validate.js插件使用经验记录
Jul 02 Javascript
javascript Promise简单学习使用方法小结
May 17 Javascript
JS实现商品筛选功能
Aug 19 Javascript
微信小程序提交form操作示例
Dec 30 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
Oct 23 Javascript
JS实现简易计算器
Feb 14 Javascript
js编写简易的计算器
Jul 29 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
Aug 28 Javascript
HTML+JS实现在线朗读器
Feb 15 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重定向的3种方式
2013/03/07 PHP
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
一页面多XMLHttpRequest对象
2007/01/22 Javascript
如何获取JQUERY AJAX返回的JSON结果集实现代码
2012/12/10 Javascript
Jquery中LigerUi的弹出编辑框(实现方法)
2013/07/09 Javascript
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
2014/08/15 Javascript
javascript框架设计读书笔记之模块加载系统
2014/12/02 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
详解javascript事件冒泡
2016/01/09 Javascript
JavaScript面向对象之私有静态变量实例分析
2016/01/14 Javascript
深入理解JavaScript中的for循环
2017/02/07 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
详解js类型判断
2018/05/22 Javascript
jQuery实现table表格信息的展开和缩小功能示例
2018/07/21 jQuery
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
JS中准确判断变量类型的方法
2020/06/01 Javascript
[41:17]VG vs Optic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
精确查找PHP WEBSHELL木马的方法(1)
2011/04/12 Python
Python多线程编程(三):threading.Thread类的重要函数和方法
2015/04/05 Python
python学习 流程控制语句详解
2016/06/01 Python
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
Python中的groupby分组功能的实例代码
2018/07/11 Python
Pytorch之保存读取模型实例
2019/12/30 Python
css3 矩阵的使用详解
2018/03/20 HTML / CSS
canvas学习笔记之2d画布基础的实现
2019/02/21 HTML / CSS
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
安踏官方商城:anta.cn
2019/12/16 全球购物
幼师专业毕业生自荐信
2013/09/29 职场文书
大学班级干部的自我评价分享
2014/02/10 职场文书
汽车检测与维修专业求职信
2014/07/04 职场文书
2015年党性分析材料
2014/12/19 职场文书
病人慰问信范文
2015/02/15 职场文书
冰雪公主观后感
2015/06/16 职场文书
同意转租证明
2015/06/24 职场文书
详解CocosCreator消息分发机制
2021/04/16 Javascript
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android