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 相关文章推荐
超级退弹代码
Jul 07 Javascript
js Date概念详细介绍
Nov 22 Javascript
JS弹出层的显示与隐藏示例代码
Dec 27 Javascript
使用Node.js实现HTTP 206内容分片的教程
Jun 23 Javascript
javascript实现简单计算器效果【推荐】
Apr 19 Javascript
IE下JS保存图片的简单实例
Jul 15 Javascript
Jquery删除css属性的简单方法
Dec 04 Javascript
HTML页面定时跳转方法解析(2种任选)
Dec 22 Javascript
vue.js实现的幻灯片功能示例
Jan 18 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
Sep 17 Javascript
Vue使用NProgress进度条的方法
Sep 21 Javascript
Vue前端判断数据对象是否为空的实例
Sep 02 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下MAIL的另一解决方案
2006/10/09 PHP
火车头discuz6.1 完美采集的php接口文件
2009/09/13 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
2019/05/27 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
JavaScript iframe的相互操作浅析
2009/10/14 Javascript
javascript之AJAX框架使用说明
2010/04/24 Javascript
JS中获取数据库中的值的方法
2013/07/14 Javascript
JqueryMobile动态生成listView并实现刷新的两种方法
2014/03/05 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
node.js中的querystring.parse方法使用说明
2014/12/10 Javascript
jquery实现超简洁的TAB选项卡效果代码
2015/08/28 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
浅谈vue路径优化之resolve
2017/10/13 Javascript
JS运动改变单物体透明度的方法分析
2018/01/23 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
three.js 将图片马赛克化的示例代码
2020/07/31 Javascript
Vue 根据条件判断van-tab的显示方式
2020/08/03 Javascript
python制作爬虫并将抓取结果保存到excel中
2016/04/06 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
2019/08/24 Python
L’urv官网:精品女性运动服品牌
2019/07/07 全球购物
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
小学英语教学反思案例
2014/02/04 职场文书
中国好声音华少广告词
2014/03/17 职场文书
考核工作实施方案
2014/03/30 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
2015年售票员工作总结
2015/04/29 职场文书
终止解除劳动合同证明书
2015/06/17 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
详解pytorch创建tensor函数
2022/03/22 Python
ECharts transform数据转换和dataZoom在项目中使用
2022/12/24 Javascript