JS检测数组类型的方法小结


Posted in Javascript onMarch 14, 2017

1.instanceof

当只有一个全局执行环境时适用,如果包含多个框架,就存在两个以上不同版本的Array构造函数,如果从一个框架向另一个框架传递数组,传入的数组与在第二个框架中原生创建的数组分别具有不同的构造函数,即为不同类型

if (value instanceof Array) {
  //对数组执行某项操作   
}

2. Array.isArray() 方法

因为是ES5新增的,只支持IE9+、Firefox 4+、Safari 5+、Opera 10.5+和Chrome

if (Array.isArray(value)) {
  //对数组执行某些操作 
}

3.Object.prototype.toString.call()方法

适用于所有环境,只支持原生的对象,Object的toString()方法不能检测非原生构造函数的构造函数名。开发人员自定义的任何构造函数都将返回[object Object]

原理:在任何值上直接调用Object的原生toString()方法,都会返回[object NativeConstrctorName]格式的字符串,每个类内部都有一个class属性,这个属性中就指定了上述字符串中构造函数名。

var value = []
console.log(Object.prototype.toString.call(value))//"[Object Array]"

由于原生数组的构造函数名和作用域无关,因此使用toString()方法就能保证输出一样的值。 

为什么不使用对象自己的toString() 方法?

var value = []
console.log(value.toString())//" "
value = ['pp','oo']
console.log(value.toString())//"pp,oo"
value = ['pp',"oo"]
console.log(Object.prototype.toString.call(value))//[object Array]

Array的tostring()方法被重写了(很多原生对象均如此),所以它会调用自己构造函数上的toString()方法,返回其他的字符串

还可以用此方法来判断是不是原生函数或者正则表达式

function isFunction(value){
    return Object.prototype.toString.call(value) === “[object Function]”
}//不适用于IE中以COM对象实现的任何函数
function isRegExp(value){
    return Object.prototype.toString.call(value) === “[object RegExp]”
}

以上所述是小编给大家介绍的JS检测数组类型的方法小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
关于恒等于(===)和非恒等于(!==)
Aug 20 Javascript
js 对小数加法精度处理示例说明
Dec 27 Javascript
JS常用字符串处理方法应用总结
May 22 Javascript
一个JavaScript处理textarea中的字符成每一行实例
Sep 22 Javascript
jquery搜索框效果实现方法
Jan 16 Javascript
Javascript代码实现仿实例化类
Apr 03 Javascript
jQuery与JS加载事件用法分析
Sep 04 Javascript
Webpack path与publicPath的区别详解
May 03 Javascript
Vue props 单向数据流的实现
Nov 06 Javascript
微信小程序实现签字功能
Dec 23 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
Feb 07 Javascript
微信小程序中data-key属性之数据传输(经验总结)
Aug 22 Javascript
轻松理解JavaScript闭包
Mar 14 #Javascript
微信小程序 页面跳转及数据传递详解
Mar 14 #Javascript
JavaScript ES6中export、import与export default的用法和区别
Mar 14 #Javascript
微信小程序 动态绑定数据及动态事件处理
Mar 14 #Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
Mar 14 #Javascript
vuejs响应用户事件(如点击事件)
Mar 14 #Javascript
微信小程序 在线支付功能的实现
Mar 14 #Javascript
You might like
php目录管理函数小结
2008/09/10 PHP
ThinkPHP3.1查询语言详解
2014/06/19 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
2015/05/13 PHP
php实现比较两个文件夹异同的方法
2015/06/18 PHP
PHP使用数组实现矩阵数学运算的方法示例
2017/05/29 PHP
JS 遮照层实现代码
2010/03/31 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
解决checkbox的attr(checked)一直为undefined问题
2014/06/16 Javascript
JavaScript学习笔记之取数组中最大值和最小值
2016/03/23 Javascript
基于jquery实现智能表单验证操作
2016/05/09 Javascript
Ajax验证用户名或昵称是否已被注册
2017/04/05 Javascript
使用cookie绕过验证码登录的实现代码
2017/10/12 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
vue之将echart封装为组件
2018/06/02 Javascript
JS将网址url转化为JSON格式的方法
2018/07/02 Javascript
如何用原生js写一个弹窗消息提醒插件
2019/05/24 Javascript
微信小程序调用天气接口并且渲染在页面过程详解
2019/06/24 Javascript
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
[04:15]DOTA2-DPC中国联赛1月19日Recap集锦
2021/03/11 DOTA
python 简易计算器程序,代码就几行
2009/08/29 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
python字符串与url编码的转换实例
2018/05/10 Python
django加载本地html的方法
2018/05/27 Python
python验证码识别教程之利用投影法、连通域法分割图片
2018/06/04 Python
python之拟合的实现
2019/07/19 Python
职高毕业生自我鉴定
2013/10/21 职场文书
国际贸易专业推荐信
2013/11/15 职场文书
高中军训第一天感言
2014/03/06 职场文书
军训拉歌口号
2014/06/13 职场文书
中学生学习保证书
2015/02/26 职场文书
2015年幼儿园班主任工作总结
2015/05/12 职场文书
2015年学校总务工作总结
2015/07/20 职场文书
法制教育讲座心得体会
2016/01/14 职场文书
Python 把两层列表展开平铺成一层(5种实现方式)
2021/04/07 Python
MySQL慢查询中的commit慢和binlog中慢事务的区别
2022/06/16 MySQL