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 onkeydown,onkeyup,onkeypress,onclick,ondblclick
Feb 04 Javascript
详解JavaScript函数绑定
Aug 18 Javascript
jquery实现按Enter键触发事件示例
Sep 10 Javascript
ie浏览器使用js导出网页到excel并打印
Mar 11 Javascript
JS实现div居中示例
Apr 17 Javascript
JS函数this的用法实例分析
Feb 05 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
Mar 04 Javascript
JavaScript实现网页对象拖放功能的方法
Apr 15 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
Jul 28 Javascript
Bootstrap每天必学之按钮(Button)插件
Apr 25 Javascript
微信小程序实战之上拉(分页加载)效果(2)
Apr 17 Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
Jan 31 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
php的控制语句
2006/10/09 PHP
PHP实现读取一个1G的文件大小
2013/08/24 PHP
php中stdClass的用法分析
2015/02/27 PHP
解决laravel 5.1报错:No supported encrypter found的办法
2017/06/07 PHP
PHP实现Redis单据锁以及防止并发重复写入
2018/04/10 PHP
静态的动态续篇之来点XML
2006/08/15 Javascript
对google个性主页的拖拽效果的js的完整注释[转]
2007/04/10 Javascript
用正则表达式 动态创建/增加css style script 兼容IE firefox
2009/03/10 Javascript
基于jQuery的js分页代码
2010/06/10 Javascript
Kibo 用于处理键盘事件的Javascript工具库
2011/10/28 Javascript
jQuery多媒体插件jQuery Media Plugin使用详解
2014/12/19 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
2017/02/24 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
JavaScript实现简单评论功能
2017/08/17 Javascript
webpack@v4升级踩坑(小结)
2018/10/08 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
js实现炫酷光感效果
2020/09/05 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
Python程序中设置HTTP代理
2016/11/06 Python
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
python爱心表白 每天都是浪漫七夕!
2018/08/18 Python
Django实现跨域请求过程详解
2019/07/25 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
2020/02/17 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
2020/05/24 Python
AmazeUI 折叠面板的实现代码
2020/08/17 HTML / CSS
金蝶的一道SQL笔试题
2012/12/18 面试题
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
教学质量评估实施方案
2014/03/17 职场文书
护士个人年度总结范文
2015/02/13 职场文书
病危通知书样本
2015/04/17 职场文书
违反纪律检讨书范文
2015/05/07 职场文书
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis
为什么RedisCluster设计成16384个槽
2021/09/25 Redis