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动态创建div
Sep 25 Javascript
javascript 同时在IE和FireFox获取KeyCode的代码
Feb 07 Javascript
JS控制网页动态生成任意行列数表格的方法
Mar 09 Javascript
基于jQuery+PHP+Mysql实现在线拍照和在线浏览照片
Sep 06 Javascript
解决jQuery使用JSONP时产生的错误
Dec 02 Javascript
javascript基础知识分享之类与函数化
Feb 13 Javascript
jQuery表单对象属性过滤选择器实例详解
Sep 13 Javascript
js学习之----深入理解闭包
Nov 21 Javascript
angular forEach方法遍历源码解读
Jan 25 Javascript
详解vue-router 2.0 常用基础知识点之router-link
May 10 Javascript
详解weex默认webpack.config.js改造
Jan 08 Javascript
JS遍历DOM文档树的方法实例详解
Apr 03 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_screw 1.5:php加密: 安装与使用详解
2013/06/20 PHP
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
PHP四舍五入、取整、round函数使用示例
2015/02/06 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
ThinkPHP5框架缓存查询操作分析
2018/05/30 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
2019/02/08 PHP
PHP实现的操作数组类库定义与用法示例
2019/05/24 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
日期函数扩展类Ver0.1.1
2006/09/07 Javascript
JavaScript 拾漏补遗
2009/12/27 Javascript
实例分析javascript中的call()和apply()方法
2014/11/28 Javascript
浅谈JS日期(Date)处理函数
2014/12/07 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
2016/09/19 Javascript
通过AngularJS实现图片上传及缩略图展示示例
2017/01/03 Javascript
防止重复发送 Ajax 请求
2017/02/15 Javascript
Vue2.0组件间数据传递示例
2017/03/07 Javascript
微信小程序顶部可滚动导航效果
2017/10/31 Javascript
详解webpack require.ensure与require AMD的区别
2017/12/13 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
2018/01/06 jQuery
完美解决iview 的select下拉框选项错位的问题
2018/03/02 Javascript
详解SPA中前端路由基本原理与实现方式
2018/09/12 Javascript
[36:17]DOTA2上海特级锦标赛 - VGL音乐会全集
2016/03/06 DOTA
Python 结巴分词实现关键词抽取分析
2017/10/21 Python
理解python中生成器用法
2017/12/20 Python
如何使用python爬虫爬取要登陆的网站
2019/07/12 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
浅谈Python中文件夹和python package包的区别
2020/06/01 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
2020/11/20 Python
Html5游戏开发之乒乓Ping Pong游戏示例(三)
2013/01/21 HTML / CSS
寄语十八大感言
2014/02/07 职场文书
会计学毕业生求职信
2014/06/25 职场文书
python图像处理 PIL Image操作实例
2022/04/09 Python