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 文件夹选择框的两种解决方案
Jul 01 Javascript
jQuery中insertBefore()方法用法实例
Jan 08 Javascript
JavaScript遍历求解数独问题的主要思路小结
Jun 12 Javascript
javascript验证内容为数字以及长度为10的简单实例
Aug 20 Javascript
JQuery异步提交表单与文件上传功能示例
Jan 12 Javascript
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
Aug 10 Javascript
vue-music关于Player播放器组件详解
Nov 28 Javascript
详解Vue webapp项目通过HBulider打包原生APP
Jun 29 Javascript
微信上传视频文件提示(推荐)
Nov 22 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
Apr 17 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
Jun 25 Javascript
ES6 Object.assign()的用法及其使用
Jan 18 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内核介绍及扩展开发指南―基础知识
2011/09/11 PHP
php之curl实现http与https请求的方法
2014/10/21 PHP
PHP实现通用alert函数的方法
2015/03/11 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
javascript 禁止复制网页
2009/06/11 Javascript
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
js QQ客服悬浮效果实现代码
2014/12/12 Javascript
让编辑器支持word复制黏贴、截屏的js代码
2016/10/17 Javascript
微信小程序 欢迎界面开发的实例详解
2016/11/30 Javascript
使用vue制作FullPage页面滚动效果
2017/08/21 Javascript
10个经典的网页鼠标特效代码
2018/01/09 Javascript
vue计算属性及使用详解
2018/04/02 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
微信公众号平台接口开发 获取微信服务器IP地址方法解析
2019/08/14 Javascript
Python中的Numpy入门教程
2014/04/26 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
2015/06/17 Python
python 移除字符串尾部的数字方法
2018/07/17 Python
基于python实现高速视频传输程序
2019/05/05 Python
Spring http服务远程调用实现过程解析
2020/06/11 Python
美国美妆网站:B-Glowing
2016/10/12 全球购物
高性能装备提升营地:Kammok
2019/02/27 全球购物
印度领先的眼镜电子商务网站:Lenskart
2019/12/16 全球购物
State Cashmere官网:半零售价可持续蒙古羊绒
2020/02/26 全球购物
员工安全生产责任书
2014/07/22 职场文书
医药公司采购员岗位职责
2014/09/12 职场文书
2014年十一国庆节活动方案
2014/09/16 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
销售助理岗位职责
2015/02/11 职场文书
设备技术员岗位职责
2015/04/11 职场文书
2015年度环卫处工作总结
2015/07/24 职场文书
商业计划书如何写?关键问题有哪些?
2019/07/11 职场文书
MySQL多表查询机制
2022/03/17 MySQL
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/07 PostgreSQL
Python闭包的定义和使用方法
2022/04/11 Python