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 相关文章推荐
jquery选择器的选择使用及性能介绍
Jan 16 Javascript
jQuery层次选择器选择元素使用介绍
Apr 18 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
Feb 23 Javascript
js实现简单锁屏功能实例
May 27 Javascript
JS访问SWF的函数用法实例
Jul 01 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
Dec 29 Javascript
整理关于Bootstrap列表组的慕课笔记
Mar 29 Javascript
JS判断一个数是否是水仙花数
Jun 11 Javascript
vue插件draggable实现拖拽移动图片顺序
Dec 01 Javascript
少女风vue组件库的制作全过程
May 15 Javascript
通过微信公众平台获取公众号文章的方法示例
Dec 25 Javascript
jQuery实现本地存储
Dec 22 jQuery
轻松理解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/07/13 PHP
PHP 类商品秒杀计时实现代码
2010/05/05 PHP
基于PHP中的常用函数回顾
2013/07/11 PHP
跟我学Laravel之路由
2014/10/15 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
2017/06/06 PHP
简单三步,搞掂内存泄漏
2007/03/10 Javascript
用javascript实现点击链接弹出"图片另存为"而不是直接打开
2007/08/15 Javascript
jquery之empty()与remove()区别说明
2010/09/10 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
JavaScript中如何通过arguments对象实现对象的重载
2014/05/12 Javascript
jQuery修改CSS伪元素属性的方法
2014/07/30 Javascript
完美兼容各大浏览器的jQuery仿新浪图文淡入淡出间歇滚动特效
2014/11/12 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
基于JS实现类似支付宝支付密码输入框
2016/09/02 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
JS实现仿PS的调色板效果完整实例
2016/12/21 Javascript
input输入密码变黑点密文的实现方法
2017/01/09 Javascript
利用Decorator如何控制Koa路由详解
2018/06/26 Javascript
js中call()和apply()改变指针问题的讲解
2019/01/17 Javascript
JavaScript作用域链实例详解
2019/01/21 Javascript
浅谈vue的第一个commit分析
2020/06/08 Javascript
一则python3的简单爬虫代码
2014/05/26 Python
Python重新引入被覆盖的自带function
2014/07/16 Python
Python爬虫常用小技巧之设置代理IP
2018/09/13 Python
python正则表达式去除两个特殊字符间的内容方法
2018/12/24 Python
Python3和pyqt5实现控件数据动态显示方式
2019/12/13 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
斯图尔特·韦茨曼鞋加拿大官网:Stuart Weitzman加拿大
2019/10/13 全球购物
Whistles官网:英国女装品牌
2020/08/14 全球购物
我的动漫时代的创业计划书范文
2014/01/27 职场文书
西门豹教学反思
2014/02/04 职场文书
学校元旦晚会方案
2014/02/19 职场文书
节水口号标语
2014/06/19 职场文书
学校读书活动总结
2014/06/30 职场文书
2019年大学生学年自我鉴定!
2019/03/25 职场文书