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 相关文章推荐
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
May 27 Javascript
jsonp原理及使用
Oct 28 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
May 09 Javascript
微信小程序之ES6与事项助手的功能实现
Nov 30 Javascript
jQuery Ajax 实现分页 kkpager插件实例代码
Aug 10 jQuery
JS自定义函数实现时间戳转换成date的方法示例
Aug 27 Javascript
基于Datatables跳转到指定页的简单实例
Nov 09 Javascript
vue 指定组件缓存实例详解
Apr 01 Javascript
JavaScript工具库之Lodash详解
Jun 15 Javascript
js实现抽奖的两种方法
Mar 19 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
Nov 05 Javascript
在js中修改html body的样式
Nov 11 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获取表单textarea数据中的换行问题
2010/09/10 PHP
解析PHP汉字转换拼音的类
2013/06/18 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
php短网址和数字之间相互转换的方法
2015/03/13 PHP
使用PHP uniqid函数生成唯一ID
2015/11/18 PHP
简介PHP的Yii框架中缓存的一些高级用法
2016/03/29 PHP
jquery ready()的几种实现方法小结
2010/06/18 Javascript
Jquery中LigerUi的弹出编辑框(实现方法)
2013/07/09 Javascript
关于Javascript作用域链的八点总结
2013/12/06 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
javaScript中slice函数用法实例分析
2015/06/08 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
2016/02/25 Javascript
DWR中各种java方法的调用
2016/05/04 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
js实现密码强度检验
2017/01/15 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
[03:55]TI9战队采访——TNC Predator
2019/08/22 DOTA
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
python编写Logistic逻辑回归
2020/12/30 Python
详解Django之auth模块(用户认证)
2018/04/17 Python
python 读取视频,处理后,实时计算帧数fps的方法
2018/07/10 Python
详解python while 函数及while和for的区别
2018/09/07 Python
python dict 相同key 合并value的实例
2019/01/21 Python
Python何时应该使用Lambda函数
2019/07/02 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
HTML5视频支持检测(检查浏览器是否支持视频播放)
2013/06/08 HTML / CSS
Ajax的优点和缺点
2014/11/21 面试题
会计与审计专业自荐信范文
2014/03/15 职场文书
实习单位指导教师评语
2014/12/30 职场文书
解析目标检测之IoU
2021/06/26 Python
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js