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 如果改变span标签的是否隐藏属性
Oct 06 Javascript
Javascript中3个需要注意的运算符
Apr 02 Javascript
jquery实现通用的内容渐显Tab选项卡效果
Sep 07 Javascript
Javascript 正则表达式校验数字的简单实例
Nov 02 Javascript
bootstrap警告框使用方法解析
Jan 13 Javascript
bootstrap datetimepicker日期插件使用方法
Jan 13 Javascript
Electron 如何调用本地模块的方法
Feb 01 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
Feb 11 Javascript
用vue写一个日历
Nov 02 Javascript
JavaScript 实现页面滚动动画
Apr 24 Javascript
详细谈谈JavaScript中循环之间的差异
Aug 23 Javascript
webpack介绍使用配置教程详解webpack介绍和使用
Jun 25 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
SUN的《AJAX与J2EE》全文译了
2007/02/23 Javascript
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
javascript中数组的sort()方法的使用介绍
2013/12/18 Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
2015/04/25 Javascript
分享有关jQuery中animate、slide、fade等动画的连续触发、滞后反复执行的bug
2016/01/10 Javascript
详解js私有作用域中创建特权方法
2016/01/25 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
2016/01/25 Javascript
快速掌握Node.js之Window下配置NodeJs环境
2016/03/21 NodeJs
JQuery.validate在ie8下不支持的快速解决方法
2016/05/18 Javascript
JavaScript必知必会(六) delete in instanceof
2016/06/08 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
JavaScript中双向数据绑定详解
2017/05/03 Javascript
vue2中filter()的实现代码
2017/07/09 Javascript
jquery easyui如何实现格式化列
2017/07/30 jQuery
薪资那么高的Web前端必看书单
2017/10/13 Javascript
jQuery创建及操作xml格式数据示例
2018/05/26 jQuery
JS实现二维数组元素的排列组合运算简单示例
2019/01/28 Javascript
微信小程序日历插件代码实例
2019/12/04 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
JavaScript实现密码强度实时验证
2020/03/18 Javascript
vue各种事件监听实例(小结)
2020/06/24 Javascript
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
python读取浮点数和读取文本文件示例
2014/05/06 Python
Python程序设计入门(5)类的使用简介
2014/06/16 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
解决pandas使用read_csv()读取文件遇到的问题
2018/06/15 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
2020/02/18 Python
python 用opencv实现霍夫线变换
2020/11/27 Python
浅谈基于HTML5的在线视频播放方案
2016/02/18 HTML / CSS
美国酒店控股公司:Choice Hotels
2018/06/15 全球购物
DeinDesign德国:设计自己的手机壳
2019/12/14 全球购物
计算机应用专业学生的自我评价分享
2013/11/03 职场文书
2019新学期家长会工作计划
2019/08/21 职场文书
用python批量解压带密码的压缩包
2021/05/31 Python
Python之Matplotlib绘制热力图和面积图
2022/04/13 Python
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis