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实现的抽象CSS圆角效果!!
May 03 Javascript
javascript 对象比较实现代码
Apr 27 Javascript
JQuery 学习笔记01 JQuery初接触
May 06 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
Apr 18 Javascript
利用js实现在浏览器状态栏显示访问者在本页停留的时间
Dec 29 Javascript
JavaScript中文件上传API详解
Apr 01 Javascript
jQuery 操作input中radio的技巧
Jul 18 Javascript
浅谈javascript中遇到的字符串对象处理
Nov 18 Javascript
angular.js4使用 RxJS 处理多个 Http 请求
Sep 23 Javascript
JS随机密码生成算法
Sep 23 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
Sep 11 Javascript
在react项目中使用antd的form组件,动态设置input框的值
Oct 24 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
PHP Global定义全局变量使用说明
2013/08/15 PHP
ThinkPHP验证码使用简明教程
2014/03/05 PHP
php打印一个边长为N的实心和空心菱型的方法
2015/03/02 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
2019/05/28 PHP
jQuery 事件队列调整方法
2009/09/18 Javascript
Javascript拓展String方法小结
2013/07/08 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
JavaScript函数中的this四种绑定形式
2017/08/15 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
Django+vue跨域问题解决的详细步骤
2019/01/20 Javascript
jquery操作checkbox的常用方法总结【附测试源码下载】
2019/06/10 jQuery
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
JS实现超级好看的鼠标小尾巴特效
2020/12/01 Javascript
Python实现提取XML内容并保存到Excel中的方法
2018/09/01 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
Python常用数据分析模块原理解析
2020/07/20 Python
如何基于matlab相机标定导出xml文件
2020/11/02 Python
国际领先的学术出版商:Springer
2017/01/11 全球购物
Pamela Love官网:纽约设计师Pamela Love的精美、时尚和穿孔珠宝
2020/10/19 全球购物
Claire’s法国:时尚配饰、美容、珠宝、头发
2021/01/16 全球购物
大学军训通讯稿
2014/01/13 职场文书
绘画专业自荐信范文
2014/02/23 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
基层党组织公开承诺书
2014/03/28 职场文书
《池塘边的叫声》教学反思
2014/04/12 职场文书
《放飞蜻蜓》教学反思
2014/04/27 职场文书
工地例会施工汇报材料
2014/08/22 职场文书
交警作风整顿剖析材料
2014/10/11 职场文书
国家助学金感谢信
2015/01/21 职场文书
2015年班干部工作总结
2015/04/29 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
Python之基础函数案例详解
2021/08/30 Python