JavaScript判断变量是否为数组的方法(Array)


Posted in Javascript onFebruary 24, 2016

 今天小编给大家整理些关于javascript判断变量是否是数组(Array)的相关知识,主要通过以下四点给大家展开话题,具体内容如下所示:

1. typeof真的那么厉害吗??

//首先看代码
var ary = [1,23,4];
console.log(typeof ary); //输出结果是Object

上面的办法并不能实时的检测出是否是数组,只能判断其类型,所以说typeof判断基本类型数据还是挺好的,但是不能准确测试出是否是数组(typeof的具体用法以后提及,现在回归正题)

2.instanceof 判断

var ary = [1,23,4];
console.log(ary instanceof Array)//true;

从输出的效果来看,还是挺令人满意的,能准确的检测出数据类型是否是数组,不要高兴的太早,大家先想想这个的缺点,我们接着说第三种方法

3.原型链方法

var ary = [1,23,4];
console.log(ary.__proto__.constructor==Array);//true
console.log(ary.constructor==Array)//true 这两段代码是一样的

这个办法开起来好高大上哦~~,利用了原型链的方法,但是但是,这个是有兼容的哦,在IE早期版本里面__proto__是没有定义的哦~而且,这个仍然有局限性,我们现在就来总结一下第2种方法和第3种方法局限性

总结一下第2种方法和第3种方法局限性

instanceof 和constructor 判断的变量,必须在当前页面声明的,比如,一个页面(父页面)有一个框架,框架中引用了一个页面(子页面),在子页面中声明了一个ary,并将其赋值给父页面的一个变量,这时判断该变量,Array == object.constructor;会返回false;

原因:

1、array属于引用型数据,在传递过程中,仅仅是引用地址的传递。

2、每个页面的Array原生对象所引用的地址是不一样的,在子页面声明的array,所对应的构造函数,是子页面的Array对象;父页面来进行判断,使用的Array并不等于子页面的Array;切记,不然很难跟踪问题!

4.通用的方法

var ary = [1,23,4];
function isArray(o){
return Object.prototype.toString.call(o)=='[object Array]';
}
console.log(isArray(ary));

具体Object.prototype.toString 的用法,请参照 Object.prototype.toString的用法

好了关于JavaScript判断变量是否为数组的方法(Array)就给大家介绍这么多,今天主要给大家总结了这四种,本文写的不好还请各位大侠多多指教,谢谢!

Javascript 相关文章推荐
jQuery 1.5 源码解读 面向中高阶JSER
Apr 05 Javascript
关于jquery input textare 事件绑定及用法学习
Apr 03 Javascript
js中方法重载如何实现?以及函数的参数问题
Aug 01 Javascript
Bootstrap每天必学之导航组件
Apr 25 Javascript
javascript淘宝主图放大镜功能
Oct 20 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
Jul 13 Javascript
js经验分享 JavaScript反调试技巧
Mar 10 Javascript
深入理解Vue router的部分高级用法
Aug 15 Javascript
点击按钮弹出模态框的一系列操作代码实例
Mar 29 Javascript
让Vue响应Map或Set的变化操作
Nov 11 Javascript
如何利用JavaScript编写一个格斗小游戏
Jan 06 Javascript
详解微信小程序(Taro)手动埋点和自动埋点的实现
Mar 02 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
Feb 24 #Javascript
jQuery+formdata实现上传进度特效遇到的问题
Feb 24 #Javascript
JQuery EasyUI的使用
Feb 24 #Javascript
使用jQuery监听DOM元素大小变化
Feb 24 #Javascript
JavaScript中的闭包
Feb 24 #Javascript
jQuery中判断对象是否存在的方法汇总
Feb 24 #Javascript
jquery中键盘事件小结
Feb 24 #Javascript
You might like
?繁体转换的class
2006/10/09 PHP
PHPMYADMIN 简明安装教程 推荐
2010/03/07 PHP
PHP数组及条件,循环语句学习
2012/11/11 PHP
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
使用PHP函数scandir排除特定目录
2014/06/12 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件
2010/09/12 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
js简单实现网页换肤功能
2017/04/07 Javascript
docker中编译nodejs并使用nginx启动
2017/06/23 NodeJs
React Hooks的深入理解与使用
2018/11/12 Javascript
原生js实现html手机端城市列表索引选择城市
2020/06/24 Javascript
vue中是怎样监听数组变化的
2020/10/24 Javascript
基于ant design日期控件使用_仅月份的操作
2020/10/27 Javascript
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
2014/07/04 Python
Python深入学习之内存管理
2014/08/31 Python
详解Python中列表和元祖的使用方法
2015/04/25 Python
Python实现批量将word转html并将html内容发布至网站的方法
2015/07/14 Python
python交互式图形编程实例(三)
2017/11/17 Python
python pandas 如何替换某列的一个值
2018/06/09 Python
python样条插值的实现代码
2018/12/17 Python
Python一个简单的通信程序(客户端 服务器)
2019/03/06 Python
python3 property装饰器实现原理与用法示例
2019/05/15 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
解决Keras 自定义层时遇到版本的问题
2020/06/16 Python
python推导式的使用方法实例
2021/02/28 Python
如何拷贝一整个Java对象,包括它的状态
2013/12/27 面试题
助人为乐表扬信范文
2014/01/14 职场文书
2014年祖国生日寄语
2014/09/19 职场文书
学生穿着不得体检讨书
2014/10/12 职场文书
批评与自我批评总结
2014/10/17 职场文书
网络营销计划书
2015/01/17 职场文书
关于golang高并发的实现与注意事项说明
2021/05/08 Golang
Python爬虫 简单介绍一下Xpath及使用
2022/04/26 Python