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 相关文章推荐
XP折叠菜单&仿QQ2006菜单
Dec 16 Javascript
js实现简易的单数字随机抽奖(0-9)
Mar 19 Javascript
Bootstrap入门书籍之(一)排版
Feb 17 Javascript
实例讲解JavaScript中call、apply、bind方法的异同
Sep 13 Javascript
jQuery基于正则表达式的表单验证功能示例
Jan 21 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
Feb 07 Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
Sep 11 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
Sep 20 Javascript
js canvas实现画图、滤镜效果
Nov 27 Javascript
Vue组件通信中非父子组件传值知识点总结
Dec 05 Javascript
JS代码触发事件代码实例
Jan 02 Javascript
vue + node如何通过一个Txt文件批量生成MP3并压缩成Zip
Jun 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
ThinkPHP3.1的Widget新用法
2014/06/19 PHP
PHP+Mysql基于事务处理实现转账功能的方法
2015/07/08 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
2016/09/22 PHP
Laravel5.1 框架表单验证操作实例详解
2020/01/07 PHP
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
特殊日期提示功能的实现方法
2016/06/16 Javascript
javascript对浅拷贝和深拷贝的详解
2016/10/14 Javascript
使用jsonp实现跨域获取数据实例讲解
2016/12/25 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
2017/03/08 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
2017/04/11 Javascript
简单介绍react redux的中间件的使用
2018/04/06 Javascript
JavaScript高级函数应用之分时函数实例分析
2018/08/03 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
jQuery实现简单评论功能
2020/08/19 jQuery
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
利用Django框架中select_related和prefetch_related函数对数据库查询优化
2015/04/01 Python
对于Python编程中一些重用与缩减的建议
2015/04/14 Python
Python的Urllib库的基本使用教程
2015/04/30 Python
Python算法输出1-9数组形成的结果为100的所有运算式
2017/11/03 Python
python3实现windows下同名进程监控
2018/06/21 Python
python GUI计算器的实现
2020/10/09 Python
使用numpngw和matplotlib生成png动画的示例代码
2021/01/24 Python
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
创立科技Java面试题
2015/11/29 面试题
财务会计实习报告体会
2013/12/20 职场文书
大学活动总结范文
2014/04/29 职场文书
社会学专业求职信
2014/07/17 职场文书
群众路线教育查摆剖析材料
2014/10/10 职场文书
深入开展党的群众路线教育实践活动心得体会
2014/11/05 职场文书
初中生散播谣言检讨书
2014/11/17 职场文书
2015入党自荐书范文
2015/03/05 职场文书
MySQL基础(一)
2021/04/05 MySQL
springboot layui hutool Excel导入的实现
2022/03/31 Java/Android
css3 文字断裂效果
2022/04/22 HTML / CSS