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中xml操作实现代码
Nov 21 Javascript
jQuery子属性过滤选择器用法分析
Feb 10 Javascript
谈一谈jQuery核心架构设计
Mar 28 Javascript
json对象与数组以及转换成js对象的简单实现方法
Jun 24 Javascript
js实现上传图片预览方法
Oct 25 Javascript
canvas实现钟表效果
Feb 13 Javascript
jquery dataTable 获取某行数据
May 05 jQuery
实例详解JavaScript中setTimeout函数的执行顺序
Jul 12 Javascript
微信小程序 POST请求的实例详解
Sep 29 Javascript
基于Vuejs的搜索匹配功能实现方法
Mar 03 Javascript
Vue 刷新当前路由的实现代码
Sep 26 Javascript
vue实现拖拽交换位置
Apr 07 Vue.js
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&mysql(二)
2006/10/09 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
php自动载入类用法实例分析
2016/06/24 PHP
JavaScript 序列化对象实现代码
2009/12/18 Javascript
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
详解Node.js 命令行程序开发教程
2017/06/07 Javascript
vue-prop父组件向子组件进行传值的方法
2018/03/01 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
nodejs简单抓包工具使用详解
2019/08/23 NodeJs
深入探究Python中变量的拷贝和作用域问题
2015/05/05 Python
Python抽象类的新写法
2015/06/18 Python
python实现自动登录人人网并采集信息的方法
2015/06/28 Python
python从入门到精通(DAY 1)
2015/12/20 Python
python中星号变量的几种特殊用法
2016/09/07 Python
python实现rsa加密实例详解
2017/07/19 Python
利用python将xml文件解析成html文件的实现方法
2017/12/22 Python
python如何读写json数据
2018/03/21 Python
对python中raw_input()和input()的用法详解
2018/04/22 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
python实现字符串加密 生成唯一固定长度字符串
2019/03/22 Python
使用python实现ftp的文件读写方法
2019/07/02 Python
python实现批量文件重命名
2019/10/31 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
自荐信怎么写好
2013/11/11 职场文书
4s店机修工岗位职责
2013/12/20 职场文书
活动总结格式
2014/08/30 职场文书
2014年自愿离婚协议书范本
2014/09/25 职场文书
2014年公务员个人工作总结
2014/11/22 职场文书
雾霾停课通知
2015/04/24 职场文书
六一晚会主持词开场白
2015/05/28 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
2017年寒假少先队活动总结
2016/04/06 职场文书
浅谈mysql执行过程以及顺序
2021/05/12 MySQL
python通过函数名调用函数的几种方法总结
2021/06/07 Python