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 相关文章推荐
为数据添加append,remove功能
Oct 03 Javascript
20个非常有用的PHP类库 加速php开发
Jan 15 Javascript
关于递归运算的顺序测试代码
Nov 30 Javascript
JS正则表达式验证数字代码
Jan 28 Javascript
JavaScript中的逻辑判断符&&、||与!介绍
Dec 31 Javascript
分享9点个人认为比较重要的javascript 编程技巧
Apr 27 Javascript
js实现具有高亮显示效果的多级菜单代码
Sep 01 Javascript
支持移动端原生js轮播图
Feb 16 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
Sep 28 Javascript
JavaScript自定义超时API代码实例
Apr 30 Javascript
Postman无法正常返回结果问题解决
Aug 28 Javascript
vue实现滑动解锁功能
Mar 03 Vue.js
轻松理解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实现把数字ID转字母ID
2013/08/12 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
js 动态选中下拉框
2009/11/26 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
实例解析JS布尔对象的toString()方法和valueOf()方法
2015/10/25 Javascript
AngularJs表单验证实例详解
2016/05/30 Javascript
JavaScript判断是否是微信浏览器
2016/06/13 Javascript
AngularJS入门教程之REST和定制服务详解
2016/08/19 Javascript
原生js实现放大镜
2017/02/20 Javascript
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
2017/12/19 Javascript
微信小程序实现顶部导航特效
2019/01/28 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
Vue.js如何使用Socket.IO的示例代码
2019/09/05 Javascript
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
pycharm 使用心得(八)如何调用另一文件中的函数
2014/06/06 Python
浅谈Python中copy()方法的使用
2015/05/21 Python
Python批量创建迅雷任务及创建多个文件
2016/02/13 Python
Python快速排序算法实例分析
2017/11/29 Python
python队列queue模块详解
2018/04/27 Python
基于pycharm导入模块显示不存在的解决方法
2018/10/13 Python
python 实现敏感词过滤的方法
2019/01/21 Python
python定时按日期备份MySQL数据并压缩
2019/04/19 Python
Flask项目中实现短信验证码和邮箱验证码功能
2019/12/05 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
2019/12/10 Python
Pytorch实现LSTM和GRU示例
2020/01/14 Python
python将logging模块封装成单独模块并实现动态切换Level方式
2020/05/12 Python
css3 条纹化和透明化表格Firefox下测试成功
2014/04/15 HTML / CSS
Html5 页面适配iPhoneX(就是那么简单)
2019/09/05 HTML / CSS
中国跨镜手机配件批发在线商店:TVC-Mall
2019/08/20 全球购物
巴塞罗那观光通票:Barcelona Pass
2019/10/30 全球购物
美国最大和最受信任的二手轮胎商店:Bestusedtires.com
2020/06/02 全球购物
企划经理的岗位职责
2013/11/17 职场文书
《狮子和兔子》教学反思
2014/03/02 职场文书
债务纠纷委托书范本
2014/10/14 职场文书
2015年小学语文教师工作总结
2015/10/23 职场文书
Golang 实现获取当前函数名称和文件行号等操作
2021/05/08 Golang