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 相关文章推荐
jquery实现简单的拖拽效果实例兼容所有主流浏览器
Jun 21 Javascript
前台js调用后台方法示例
Dec 02 Javascript
JS中字符串trim()使用示例
May 26 Javascript
Jquery-1.9.1源码分析系列(十一)之DOM操作
Nov 25 Javascript
jQuery自动完成插件completer附源码下载
Jan 04 Javascript
Vue.js报错Failed to resolve filter问题的解决方法
May 25 Javascript
jQuery插件uploadify实现ajax效果的图片上传
Jun 18 Javascript
用Vue.extend构建消息提示组件的方法实例
Aug 08 Javascript
Vue文件配置全局变量的实例
Sep 06 Javascript
Node.js 进程平滑离场剖析小结
Jan 24 Javascript
vue如何实现自定义底部菜单栏
Jul 01 Javascript
深入理解javascript中的this
Feb 08 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实现快钱支付功能(涉及到接口)
2013/07/01 PHP
PHP原生函数一定好吗?
2014/12/08 PHP
CodeIgniter控制器之业务逻辑实例分析
2016/01/20 PHP
Yii2 assets清除缓存的方法
2016/05/16 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
jquery入门—访问DOM对象方法
2013/01/07 Javascript
根据经纬度计算地球上两点之间的距离js实现代码
2013/03/05 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
微信小程序 canvas API详解及实例代码
2016/10/08 Javascript
JavaScript字符集编码与解码详谈
2017/02/02 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
JS验证码实现代码
2017/09/14 Javascript
如何在Python中编写并发程序
2016/02/27 Python
Django rest framework实现分页的示例
2018/05/24 Python
Python 中Django验证码功能的实现代码
2019/06/20 Python
django项目登录中使用图片验证码的实现方法
2019/08/15 Python
python同步两个文件夹下的内容
2019/08/29 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
django 链接多个数据库 并使用原生sql实现
2020/03/28 Python
CSS3制作酷炫的条纹背景
2017/11/09 HTML / CSS
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
香港礼品网站:GiftU eshop
2017/09/01 全球购物
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
建筑专业自荐信
2013/10/18 职场文书
教师实习自我鉴定
2013/12/18 职场文书
七年级数学教学反思
2014/01/22 职场文书
学习心理学的体会
2014/11/07 职场文书
2014年学生会工作总结范文
2014/11/07 职场文书
加班费申请报告
2015/05/15 职场文书
为什么MySQL选择Repeatable Read作为默认隔离级别
2021/07/26 MySQL
高通2023 年将发布高性能PC处理器
2022/04/29 数码科技