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 相关文章推荐
关于Jqzoom的使用心得 jquery放大镜效果插件
Apr 12 Javascript
在js(jquery)中获得文本框焦点和失去焦点的方法
Dec 04 Javascript
javascript实现给定半径求出圆的面积
Jun 26 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
Sep 26 Javascript
AngularJS基础 ng-dblclick 指令用法
Aug 01 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
Nov 07 Javascript
vue组件父子间通信之综合练习(聊天室)
Nov 07 Javascript
VUE实现可随意拖动的弹窗组件
Sep 25 Javascript
js实现旋转木马轮播图效果
Jan 10 Javascript
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
Apr 13 Javascript
Vue 401配合Vuex防止多次弹框的案例
Nov 11 Javascript
JS数据类型分类及常用判断方法
Nov 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
用mysql触发器自动更新memcache的实现代码
2009/10/11 PHP
PHP使用mysqli同时执行多条sql查询语句的实例
2019/03/22 PHP
Extjs Gird 支持中文拼音排序实现代码
2013/04/15 Javascript
jquery如何实现锚点链接之间的平滑滚动
2013/12/02 Javascript
jquery实现鼠标拖动图片效果示例代码
2014/01/09 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
jQuery实现contains方法不区分大小写的方法
2015/02/13 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
2015/06/05 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
2016/05/17 Javascript
js获取上传文件的绝对路径实现方法
2016/08/02 Javascript
深入理解JS DOM事件机制
2016/08/06 Javascript
js 创建对象 经典模式全面了解
2016/08/16 Javascript
浅析js的模块化编写 require.js
2016/12/07 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
vue实现的组件兄弟间通信功能示例
2018/12/04 Javascript
vue 自定义组件的写法与用法详解
2020/03/04 Javascript
js实现选项卡效果
2020/03/07 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
[36:45]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
Python contextlib模块使用示例
2015/02/18 Python
Django入门使用示例
2017/12/12 Python
如何利用python制作时间戳转换工具详解
2018/09/12 Python
使用Python获取并处理IP的类型及格式方法
2018/11/01 Python
详解python的super()的作用和原理
2020/10/29 Python
python中复数的共轭复数知识点总结
2020/12/06 Python
美国唇部护理专家:Sara Happ
2019/06/19 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2013/07/12 面试题
服务员岗位职责
2014/01/29 职场文书
个人创业事迹材料
2014/12/30 职场文书
离婚民事起诉状
2015/08/03 职场文书
2016党性教育学习心得体会
2016/01/21 职场文书
《鲸》教学反思
2016/02/23 职场文书
《中彩那天》教学反思
2016/02/24 职场文书
python 判断字符串当中是否包含字符(str.contain)
2022/06/01 Python