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 相关文章推荐
IE中直接运行显示当前网页中的图片 推荐
Aug 31 Javascript
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
Apr 27 Javascript
cnblogs csdn 代码运行框实现代码
Nov 02 Javascript
使用javascript获取页面名称
Dec 23 Javascript
简单的js表格操作
Sep 24 Javascript
JS实现的随机排序功能算法示例
Jun 09 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
Aug 16 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
Sep 19 Javascript
推荐10款扩展Web表单的JS插件
Dec 25 Javascript
Vue前端开发规范整理(推荐)
Apr 23 Javascript
layer设置maxWidth及maxHeight解决方案
Jul 26 Javascript
vue 页面跳转的实现方式
Jan 12 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
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
php解析url并得到url中的参数及获取url参数的四种方式
2015/10/26 PHP
htm调用JS代码
2007/03/15 Javascript
js textarea自动增高并隐藏滚动条
2009/12/16 Javascript
jQuery1.4.2与老版本json格式兼容的解决方法
2011/02/12 Javascript
jquery 操作DOM案例代码分享
2012/04/05 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
2015/01/24 Javascript
JS实现从网页顶部掉下弹出层效果的方法
2015/08/06 Javascript
jQuery实现鼠标经过时出现隐藏层文字链接的方法
2015/10/12 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
2017/01/16 Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
2017/07/17 Javascript
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
webpack学习教程之前端性能优化总结
2017/12/05 Javascript
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
2018/01/25 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
2018/02/03 Javascript
详解JavaScript作用域和作用域链
2019/03/19 Javascript
vue-cli3 DllPlugin 提取公用库的方法
2019/04/24 Javascript
150行Node.js实现的dns代理工具
2019/08/02 Javascript
基于vue+element实现全局loading过程详解
2020/07/10 Javascript
[00:32]DOTA2上海特级锦标赛 COL战队宣传片
2016/03/04 DOTA
python选择排序算法的实现代码
2013/11/21 Python
python结合API实现即时天气信息
2016/01/19 Python
tensorflow实现对图片的读取的示例代码
2018/02/12 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
2018/12/20 Python
python matplotlib如何给图中的点加标签
2019/11/14 Python
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
安踏官方商城:anta.cn
2019/12/16 全球购物
意大利买卖二手奢侈品网站:LAMPOO
2020/06/03 全球购物
MYSQL基础面试题
2012/05/13 面试题
Ruby如何进行文件操作
2014/07/17 面试题
硕士研究生自我鉴定范文
2013/12/27 职场文书
工作决心书范文
2014/03/11 职场文书
课外科技活动总结
2014/08/27 职场文书
党员演讲稿
2014/09/04 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript