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 相关文章推荐
High Performance JavaScript(高性能JavaScript)读书笔记分析
May 05 Javascript
深入理解javaScript中的事件驱动
May 21 Javascript
利用js实现遮罩以及弹出可移动登录窗口
Jul 08 Javascript
js图片轮播特效代码分享
Sep 07 Javascript
详解AngularJS如何实现跨域请求
Aug 22 Javascript
javascript实现根据函数名称字符串动态执行函数的方法示例
Dec 28 Javascript
Javascript 高性能之递归,迭代,查表法详解及实例
Jan 08 Javascript
Angular组件化管理实现方法分析
Mar 17 Javascript
JavaScript手风琴页面制作
May 17 Javascript
微信小程序实现传参数的几种方法示例
Jan 10 Javascript
微信小程序自定义多选事件的实现代码
May 17 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
Aug 30 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
编译问题
2006/10/09 PHP
IIS6的PHP最佳配置方法
2007/03/19 PHP
php中理解print EOT分界符和echo EOT的用法区别小结
2010/02/21 PHP
递归实现php数组转xml的代码分享
2015/05/14 PHP
Yii2中cookie用法示例分析
2016/07/18 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
JQuery AJAX实现目录浏览与编辑的代码
2008/10/21 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
vue.js指令v-model使用方法
2017/03/20 Javascript
详解angularJs模块ui-router之状态嵌套和视图嵌套
2017/04/28 Javascript
nodejs操作mysql实现增删改查的实例
2017/05/28 NodeJs
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
2018/08/17 Javascript
解决JavaScript中0.1+0.2不等于0.3问题
2018/10/23 Javascript
解决layui表格的表头不滚动的问题
2019/09/04 Javascript
基于ajax及jQuery实现局部刷新过程解析
2020/09/12 jQuery
在VUE中使用lodash的debounce和throttle操作
2020/11/09 Javascript
[52:00]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs Optic
2018/04/02 DOTA
简单介绍Python下自己编写web框架的一些要点
2015/04/29 Python
谈谈Python进行验证码识别的一些想法
2016/01/25 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
2017/06/20 Python
简述Python2与Python3的不同点
2018/01/21 Python
如何更优雅地写python代码
2019/07/02 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
python的Jenkins接口调用方式
2020/05/12 Python
英国著名国际平价时尚男装品牌:Topman
2016/08/27 全球购物
罗技美国官网:Logitech美国
2020/01/22 全球购物
《油菜花开了》教学反思
2014/02/22 职场文书
关于建议书的格式范文
2014/05/20 职场文书
出国签证在职证明
2014/09/20 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
MySQL如何快速创建800w条测试数据表
2022/03/17 MySQL
Java Redisson多策略注解限流
2022/09/23 Java/Android