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 相关文章推荐
静态的动态续篇之来点XML
Dec 23 Javascript
jQuery技巧总结
Jan 01 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
Mar 16 Javascript
js获取当前路径的简单示例代码
Jan 08 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
Feb 19 Javascript
AngularJS中指令的四种基本形式实例分析
Nov 22 Javascript
原生js实现图片放大缩小计时器效果
Jan 20 Javascript
关于在mongoose中填充外键的方法详解
Aug 14 Javascript
vue.js实现的全选与全不选功能示例【基于elementui】
Dec 03 Javascript
JavaScript动态添加数据到表单并提交的几种方式
Jun 26 Javascript
vue 清空input标签 中file的值操作
Jul 21 Javascript
js制作提示框插件
Dec 24 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 获取完整url地址
2008/12/20 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
PHP中使用BigMap实例
2015/03/30 PHP
php getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
PDO::getAttribute讲解
2019/01/28 PHP
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
js面向对象 多种创建对象方法小结
2012/05/21 Javascript
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
使用JavaScript 编写简单计算器
2014/11/24 Javascript
在JavaScript中使用NaN值的方法
2015/06/05 Javascript
javascript url几种编码方式详解
2016/06/06 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
ionic开发中点击input时键盘自动弹出
2016/12/23 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
node.js操作mongodb简单示例分享
2017/05/25 Javascript
npm 更改默认全局路径以及国内镜像的方法
2018/05/16 Javascript
vue添加class样式实例讲解
2019/02/12 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
关于angular浏览器兼容性问题的解决方案
2020/07/26 Javascript
Python win32com 操作Exce的l简单方法(必看)
2017/05/25 Python
详解如何设置Python环境变量?
2019/05/13 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
python代码能做成软件吗
2020/07/24 Python
python实现b站直播自动发送弹幕功能
2021/02/20 Python
用HTML5.0制作网页的教程
2010/05/30 HTML / CSS
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
AT&T Wireless:手机、无限数据计划和配件
2018/06/03 全球购物
车辆安全检查制度
2014/01/12 职场文书
八年级物理教学反思
2014/01/19 职场文书
气象学专业个人求职信
2014/03/15 职场文书
2014年初中班主任工作总结
2014/11/08 职场文书
小学大队委竞选口号
2015/12/25 职场文书
素质教育培训心得体会
2016/01/19 职场文书
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL