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 相关文章推荐
JavaScript入门教程(10) 认识其他对象
Jan 31 Javascript
js实现页面打印功能实例代码(附去页眉页脚功能代码)
Dec 15 Javascript
用js来获取上传的文件名纯粹是为了美化而用
Oct 23 Javascript
禁用JavaScript控制台调试的方法
Mar 07 Javascript
完美兼容各大浏览器的jQuery插件实现图片切换特效
Dec 12 Javascript
原生JS实现响应式瀑布流布局
Apr 02 Javascript
JS组件Bootstrap实现弹出框和提示框效果代码
Dec 08 Javascript
微信小程序 生命周期详解
Oct 12 Javascript
JS实现淡入淡出图片效果的方法分析
Dec 20 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
Jul 27 Javascript
聊聊鉴权那些事(推荐)
Aug 22 Javascript
JS出现404错误原理及解决方案
Jul 01 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
虫族 Zerg 魔法科技
2020/03/14 星际争霸
是否存在第一台收音机的说法
2021/03/01 无线电
PHP 命名空间实例说明
2011/01/27 PHP
phpstorm编辑器乱码问题解决
2014/12/01 PHP
PHP flush 函数使用注意事项
2016/08/26 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
php 中的closure用法详解
2017/06/12 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
2019/04/09 PHP
js或者jquery判断图片是否加载完成实现代码
2013/03/20 Javascript
JSON序列化与解析原生JS方法且IE6和chrome测试通过
2013/09/05 Javascript
JS实现点击按钮自动增加一个单元格的方法
2015/03/09 Javascript
Javascript中replace()小结
2015/09/30 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
React实现双向绑定示例代码
2016/09/19 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
2017/06/09 Javascript
jQuery响应滚动条事件功能示例
2017/10/14 jQuery
用react-redux实现react组件之间数据共享的方法
2018/06/08 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
JavaScript使用递归和循环实现阶乘的实例代码
2018/08/28 Javascript
JS实现可控制的进度条
2020/03/25 Javascript
三剑客:offset、client和scroll还傻傻分不清?
2020/12/04 Javascript
[01:36:57]【09DOTA2第一视角】小骷髅
2014/04/16 DOTA
全面解析Python的While循环语句的使用方法
2015/10/13 Python
python2.7 json 转换日期的处理的示例
2018/03/07 Python
python实现人人自动回复、抢沙发功能
2018/06/08 Python
关于Tensorflow 模型持久化详解
2020/02/12 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
《自然之道》教学反思
2014/02/11 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
小学德育工作总结2015
2015/05/12 职场文书
2015年大学迎新晚会总结
2015/07/16 职场文书
工伤调解协议书
2016/03/21 职场文书
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL
Python数据分析之绘图和可视化详解
2021/06/02 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
2021/06/29 Python