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下string.format函数补充
Aug 24 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
Nov 28 Javascript
javascript实现回车键提交表单方法总结
Jan 10 Javascript
jquery拖拽排序简单实现方法(效果增强版)
Feb 16 Javascript
jQuery使用模式窗口实现在主页面和子页面中互相传值的方法
Mar 01 Javascript
javascript回到顶部特效
Jul 30 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
Mar 08 Javascript
让Vue也可以使用Redux的方法
May 23 Javascript
使用Vue CLI创建typescript项目的方法
Aug 09 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
Oct 10 jQuery
js实现图片无缝循环轮播
Oct 28 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
Oct 13 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伪静态页面函数附使用方法
2008/06/20 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
PHP实现生成数据字典功能示例
2018/05/24 PHP
javascript 播放器 控制
2007/01/22 Javascript
jQuery 类twitter的文本字数限制带提示效果插件
2010/04/16 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
javascript实现检验的各种规则
2015/07/31 Javascript
jquery带翻页动画的电子杂志代码分享
2015/08/21 Javascript
11种ASP连接数据库的方法
2015/09/18 Javascript
jquery淡入淡出效果简单实例
2016/01/14 Javascript
js删除局部变量的实现方法
2016/06/25 Javascript
微信小程序左右滑动切换页面详解及实例代码
2017/02/28 Javascript
JS字符串长度判断,超出进行自动截取的实例(支持中文)
2017/03/06 Javascript
解读ES6中class关键字
2017/11/20 Javascript
完美解决axios跨域请求出错的问题
2018/02/05 Javascript
一百行JS代码实现一个校验工具
2019/04/30 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
[37:35]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第二局
2016/02/25 DOTA
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
2015/08/10 Python
Python简单遍历字典及删除元素的方法
2016/09/18 Python
关于Python中异常(Exception)的汇总
2017/01/18 Python
python函数的5种参数详解
2017/02/24 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
关于pymysql模块的使用以及代码详解
2019/09/01 Python
Python搭建代理IP池实现检测IP的方法
2019/10/27 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
django API 中接口的互相调用实例
2020/04/01 Python
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
2014/06/23 HTML / CSS
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
纪伊国屋泰国网上书店:Kinokuniya泰国
2017/12/24 全球购物
美国气象仪器、花园装饰和墙壁艺术商店:Wind & Weather
2019/05/29 全球购物
学雷锋宣传标语
2014/06/25 职场文书
劳动纠纷调解协议书格式
2014/11/30 职场文书
经典导游欢迎词
2015/01/26 职场文书
给老婆的保证书怎么写
2015/05/08 职场文书
六年级作文之预言作文
2019/10/25 职场文书