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中null与undefined分析
Jul 25 Javascript
Jquery操作Select 简单方便 一个js插件搞定
Nov 12 Javascript
jQuery循环滚动新闻列表示例代码
Jun 17 Javascript
javascript 兼容各个浏览器的事件
Feb 04 Javascript
基于jquery实现的鼠标悬停提示案例
Dec 11 Javascript
微信小程序开发教程-手势解锁实例
Jan 06 Javascript
javascript 判断一个对象为数组的方法
May 03 Javascript
以BootStrap Tab为例写一个前端组件
Jul 25 Javascript
vue填坑之webpack run build 静态资源找不到的解决方法
Sep 03 Javascript
vue中使用heatmapjs的示例代码(结合百度地图)
Sep 05 Javascript
如何从头实现一个node.js的koa框架
Jun 17 Javascript
layui实现数据表格自定义数据项
Oct 26 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
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
一个经典的PHP文件上传类分享
2014/11/18 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
2015/12/22 PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
2017/02/04 PHP
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
关于js datetime的那点事
2011/11/15 Javascript
JavaScript判断textarea值是否为空并给出相应提示
2014/09/04 Javascript
JS取得绝对路径的实现代码
2015/01/16 Javascript
浅谈js中变量初始化
2015/02/03 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
2015/04/01 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
Ext JS框架程序中阻止键盘触发回退或者刷新页面的代码分享
2016/06/07 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
原生js实现新闻列表展开/收起全文功能
2017/01/20 Javascript
Bootstrap实现各种进度条样式详解
2017/04/13 Javascript
.vue文件 加scoped 样式不起作用的解决方法
2018/05/28 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
Python中使用装饰器时需要注意的一些问题
2015/05/11 Python
利用python实现对web服务器的目录探测的方法
2019/02/26 Python
django之使用celery-把耗时程序放到celery里面执行的方法
2019/07/12 Python
Django 自定义分页器的实现代码
2019/11/24 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
2020/02/28 Python
Python中random模块常用方法的使用教程
2020/10/04 Python
linux面试题参考答案(11)
2016/11/26 面试题
元旦晚会上单位领导演讲稿
2014/01/05 职场文书
医学生就业推荐表自我鉴定
2014/03/26 职场文书
环保建议书400字
2014/05/14 职场文书
安全施工责任书
2014/08/25 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
支行行长竞聘报告
2014/11/06 职场文书
2015年社区环境卫生工作总结
2015/04/21 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
用javascript制作qq注册动态页面
2021/04/14 Javascript
详解PHP Swoole与TCP三次握手
2021/05/27 PHP