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学习网址备忘
May 29 Javascript
js小技巧--自动隐藏红叉叉
Aug 13 Javascript
Js 时间间隔计算的函数(间隔天数)
Nov 15 Javascript
js函数与php函数的区别实例浅析
Jan 12 Javascript
Javascript编程中几种继承方式比较分析
Nov 28 Javascript
基于JS实现无缝滚动思路及代码分享
Jun 07 Javascript
js enter键激发事件实例代码
Aug 17 Javascript
Bootstrap modal 多弹窗之叠加引起的滚动条遮罩阴影问题
Feb 27 Javascript
Angular开发者指南之入门介绍
Mar 05 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
Mar 14 Javascript
vue element项目引入icon图标的方法
Jun 06 Javascript
element-ui table组件如何使用render属性的实现
Nov 04 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
人大复印资料处理程序_查询篇
2006/10/09 PHP
php分页示例代码
2007/03/19 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
2013/06/17 PHP
Linux下PHP加速器APC的安装与配置笔记
2014/10/24 PHP
3款值得推荐的微信开发开源框架
2014/10/28 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
2017/03/19 PHP
关于js new Date() 出现NaN 的分析
2012/10/23 Javascript
jquery实现控制表格行高亮实例
2013/06/05 Javascript
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
2013/07/02 Javascript
js中for in的用法示例解析
2013/12/25 Javascript
jquery如何判断表格同一列不同行input数据是否重复
2014/05/14 Javascript
javascript实现密码强度显示
2015/03/18 Javascript
JS中获取函数调用链所有参数的方法
2015/05/07 Javascript
JavaScript实现同时调用多个函数的方法
2015/11/09 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
JavaScript 函数节流详解及方法总结
2017/02/09 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
详解redux异步操作实践
2018/08/15 Javascript
js DOM的事件常见操作实例详解
2019/12/16 Javascript
[49:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第二场 3月4日
2021/03/11 DOTA
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
python http基本验证方法
2018/12/26 Python
Python使用paramiko操作linux的方法讲解
2019/02/25 Python
Python netmiko模块的使用
2020/02/14 Python
完美解决jupyter由于无法import新包的问题
2020/05/26 Python
python的pip有什么用
2020/06/17 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
css3简单练习实现遨游浏览器logo的绘制
2013/01/30 HTML / CSS
html5 Canvas实现图片旋转的示例
2018/01/15 HTML / CSS
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
犯错检讨书
2014/02/21 职场文书
员工生日活动方案
2014/08/24 职场文书
2014年幼儿园安全工作总结
2014/11/10 职场文书
2015年秋季运动会广播稿
2015/08/19 职场文书
Nginx虚拟主机的搭建的实现步骤
2022/01/18 Servers
把77A收信机改造成收音机
2022/04/05 无线电