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 相关文章推荐
JS异常处理的一个想法(sofish)
Mar 14 Javascript
js日期联动示例
May 02 Javascript
jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
Oct 30 Javascript
javascript编程异常处理实例小结
Nov 30 Javascript
JavaScript中用let语句声明作用域的用法讲解
May 20 Javascript
微信开发 JS-SDK 6.0.2 经常遇到问题总结
Dec 08 Javascript
js实现数组去重方法及效率?Ρ? target=
Feb 14 Javascript
vue 根据数组中某一项的值进行排序的方法
Aug 30 Javascript
实用Javascript调试技巧分享(小结)
Jun 18 Javascript
JavaScript canvas实现雪花随机动态飘落
Feb 08 Javascript
vue修改Element的el-table样式的4种方法
Sep 17 Javascript
基于js实现的图片拖拽排序源码实例
Nov 04 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
关于拼配咖啡,你要知道
2021/03/03 咖啡文化
php引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
php列出mysql表所有行和列的方法
2015/03/13 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
javascript Prototype 对象扩展
2009/05/15 Javascript
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
2009/11/30 Javascript
Javascript下判断是否为闰年的Datetime包
2010/10/26 Javascript
用于节点操作的API,颠覆原生操作HTML DOM节点的API
2010/12/11 Javascript
图片img的src不变让浏览器重新加载实现方法
2013/03/29 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
js用闭包遍历树状数组的方法
2014/03/19 Javascript
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
JavaScript设计模式之建造者模式介绍
2014/12/28 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
详解webpack2异步加载套路
2018/09/14 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
jquery validate 实现动态增加/删除验证规则操作示例
2019/10/28 jQuery
vue 微信分享回调iOS和安卓回调出现错误的解决
2020/09/07 Javascript
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
python中查看变量内存地址的方法
2015/05/05 Python
python使用pandas实现数据分割实例代码
2018/01/25 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
对python的输出和输出格式详解
2018/12/08 Python
python简单区块链模拟详解
2019/07/03 Python
Python 串口通信的实现
2020/09/29 Python
Staples加拿大官方网站:办公用品一站式采购
2016/09/25 全球购物
专注澳大利亚特产和新西兰特产的澳洲中文网:0061澳洲制造
2019/03/24 全球购物
C++面试题目
2013/06/25 面试题
历史专业学生的自我评价
2014/02/28 职场文书
承诺书的格式范文
2014/03/28 职场文书
学生个人评语大全
2015/01/04 职场文书
交通事故赔偿起诉书
2015/05/20 职场文书
地震捐款简报
2015/07/21 职场文书
SQL注入的实现以及防范示例详解
2021/06/02 MySQL