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 表格隔行颜色
Dec 02 Javascript
JQuery动画与特效实例分析
Feb 02 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
Dec 02 Javascript
js实现图片无缝滚动特效
Mar 19 Javascript
JavaScript之Vue.js【入门基础】
Dec 06 Javascript
canvas实现图片根据滑块放大缩小效果
Feb 24 Javascript
Bootstrap进度条实现代码解析
Mar 07 Javascript
JQuery判断正整数整理小结
Aug 21 jQuery
使用3D引擎threeJS实现星空粒子移动效果
Sep 13 Javascript
Node实战之不同环境下配置文件使用教程
Jan 02 Javascript
js指定日期增加指定月份的实现方法
Dec 19 Javascript
Vue 实例事件简单示例
Sep 19 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
玩转图像函数库―常见图形操作
2006/09/03 PHP
通用PHP动态生成静态HTML网页的代码
2010/03/04 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
2013/07/03 PHP
PHP数组排序之sort、asort与ksort用法实例
2014/09/08 PHP
php对文件夹进行相关操作(遍历、计算大小)
2015/11/04 PHP
PHP实现批量检测网站是否能够正常打开的方法
2016/08/23 PHP
php实现微信支付之现金红包
2018/05/30 PHP
用JavaScript实现单继承和多继承的简单方法
2009/03/29 Javascript
几种延迟加载JS代码的方法加快网页的访问速度
2013/10/12 Javascript
使用js如何实现全选与全不选
2013/12/30 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
js实现图片漂浮效果的方法
2015/03/02 Javascript
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
less简单入门(CSS 预处理语言)
2017/03/08 Javascript
原生js实现密码输入框值的显示隐藏
2017/07/17 Javascript
认识less和webstrom的less配置方法
2017/08/02 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
详解webpack的clean-webpack-plugin插件报错
2020/10/16 Javascript
JavaScript的一些小技巧分享
2021/01/06 Javascript
python实现得到一个给定类的虚函数
2014/09/28 Python
Python使用metaclass实现Singleton模式的方法
2015/05/05 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
2019/08/20 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
FORZIERI福喜利中国官网:奢侈品购物梦工厂
2019/05/03 全球购物
瑞士最大的图书贸易公司:Orell Füssli
2019/12/28 全球购物
三维科技面试题
2013/07/27 面试题
医学生实习自我鉴定
2013/09/27 职场文书
新闻专业个人求职信
2013/12/19 职场文书
致共产党员倡议书
2014/04/16 职场文书
党员个人公开承诺书
2014/08/29 职场文书
django中websocket的具体使用
2022/01/22 Python
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技