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 相关文章推荐
JS处理VBArray的函数使用说明
May 11 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
Jul 01 Javascript
禁止选中文字兼容IE、Chrome、FF等
Sep 04 Javascript
用JS做的简单的可折叠的两级树形菜单
Sep 21 Javascript
浅析javascript的间隔调用和延时调用
Nov 12 Javascript
javascript特殊日历控件分享
Mar 07 Javascript
JS 面向对象之继承---多种组合继承详解
Jul 10 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
Aug 30 Javascript
Vuex 入门教程
Jan 10 Javascript
JSONP原理及应用实例详解
Sep 13 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
Sep 15 Javascript
JavaScript键盘事件响应顺序详解
Sep 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
php htmlentities和htmlspecialchars 的区别
2008/08/18 PHP
php生成缩略图的类代码
2008/10/02 PHP
深入PHP内存相关的功能特性详解
2013/06/08 PHP
ThinkPHP基本的增删查改操作实例教程
2014/08/22 PHP
php获取数组元素中头一个数组元素值的实现方法
2014/12/20 PHP
php实现encode64编码类实例
2015/03/24 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
2015/11/10 PHP
php实现等比例压缩图片
2018/07/26 PHP
PHP dirname(__FILE__)原理及用法解析
2020/10/28 PHP
javascript 读取xml,写入xml 实现代码
2009/07/10 Javascript
jquery 无限级下拉菜单的简单实现代码
2014/02/21 Javascript
12行javascript代码绘制一个八卦图
2015/04/02 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
JavaScript表单验证实现代码
2017/05/22 Javascript
详解Angular 4 表单快速入门
2017/06/05 Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
2018/09/16 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
Layui表格行工具事件与数据回填方法
2019/09/13 Javascript
js实现无缝轮播图插件封装
2020/07/31 Javascript
Vue基于iview table展示图片实现点击放大
2020/08/05 Javascript
JavaScript canvas实现雨滴特效
2021/01/10 Javascript
Python修改Excel数据的实例代码
2013/11/01 Python
寻找网站后台地址的python脚本
2014/09/01 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
Python中Numpy mat的使用详解
2019/05/24 Python
python监控进程状态,记录重启时间及进程号的实例
2019/07/15 Python
python读取csv文件指定行的2种方法详解
2020/02/13 Python
python 绘制正态曲线的示例
2020/09/24 Python
python+openCV对视频进行截取的实现
2020/11/27 Python
有关HTML5页面在iPhoneX适配问题
2017/11/13 HTML / CSS
印度最大的网上花店:Ferns N Petals(鲜花、礼品和蛋糕)
2017/10/16 全球购物
党的群众路线教育实践活动批评与自我批评
2014/02/16 职场文书
国庆宣传标语
2014/06/30 职场文书
学校教师读书活动总结
2014/07/08 职场文书
幼儿园小班工作总结2015
2015/04/25 职场文书
2015年汽车销售经理工作总结
2015/04/27 职场文书