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.GetAllChild(element,deep,condition)使用介绍
Sep 21 Javascript
调用DOM对象的focus使文本框获得焦点
Feb 19 Javascript
jquery中的常用事件bind、hover、toggle等示例介绍
Jul 21 Javascript
Javascript基础教程之for循环
Jan 18 Javascript
又一款js时钟!transform实现时钟效果
Aug 15 Javascript
jQuery css() 方法动态修改CSS属性
Sep 25 Javascript
纯js仿淘宝京东商品放大镜功能
Mar 02 Javascript
jQuery实现一个简单的验证码功能
Jun 26 jQuery
vue的事件绑定与方法详解
Aug 16 Javascript
基于ES6 Array.of的用法(实例讲解)
Sep 05 Javascript
jQuery实现点击自身以外区域关闭弹出层功能完整示例【改进版】
Jul 31 jQuery
layuiAdmin循环遍历展示商品图片列表的方法
Sep 16 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
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
浅谈php://filter的妙用
2019/03/05 PHP
php集成开发环境详解
2019/09/24 PHP
Some tips of wmi scripting in jscript (1)
2007/04/03 Javascript
国外的为初学者写的JavaScript教程
2008/06/09 Javascript
复选框全选与全不选操作实现思路
2013/08/18 Javascript
谈谈JavaScript类型系统之Math
2016/01/06 Javascript
js实现前端分页页码管理
2017/01/06 Javascript
js实现固定宽高滑动轮播图效果
2017/01/13 Javascript
Javascript封装id、class与元素选择器方法示例
2017/03/13 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
js断点调试心得分享(必看篇)
2017/12/08 Javascript
小程序实现留言板
2018/11/02 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
2018/12/03 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
JavaScript的变量声明与声明提前用法实例分析
2019/11/26 Javascript
js面试题之异步问题的深入理解
2020/09/20 Javascript
vue项目中使用rem,在入口文件添加内容操作
2020/11/11 Javascript
Python中无限元素列表的实现方法
2014/08/18 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
python中使用正则表达式的连接符示例代码
2017/10/10 Python
Python xlwt设置excel单元格字体及格式
2020/04/18 Python
Tensorflow实现卷积神经网络的详细代码
2018/05/24 Python
flask-socketio实现WebSocket的方法
2018/07/31 Python
Python求区间正整数内所有素数之和的方法实例
2020/10/13 Python
如何基于Python pygame实现动画跑马灯
2020/11/18 Python
使用OpenCV校准鱼眼镜头的方法
2020/11/26 Python
详解HTML5中div和section以及article的区别
2015/07/14 HTML / CSS
校领导推荐信
2013/11/01 职场文书
中学门卫岗位职责
2013/12/26 职场文书
学校消防演习方案
2014/02/19 职场文书
七一党日活动总结
2014/07/08 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS