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 相关文章推荐
有关js的变量作用域和this指针的讨论
Dec 16 Javascript
jquery链式操作的正确使用方法
Jan 06 Javascript
浅析JavaScript 箭头函数 generator Date JSON
May 23 Javascript
jQuery实现动画、消失、显现、渐出、渐入效果示例
Sep 06 jQuery
ES6数组与对象的解构赋值详解
Jun 14 Javascript
关于vue项目中搜索节流的实现代码
Sep 17 Javascript
vue.js的状态管理vuex中store的使用详解
Nov 08 Javascript
Vue学习之axios的使用方法实例分析
Jan 06 Javascript
js实现自定义右键菜单
May 18 Javascript
如何在Vue中使localStorage具有响应式(思想实验)
Jul 14 Javascript
Element Dropdown下拉菜单的使用方法
Jul 26 Javascript
js异步接口并发数量控制的方法示例
Nov 22 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画图实例
2014/11/05 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
2017/07/10 PHP
微信接口生成带参数的二维码
2017/07/31 PHP
Jquery选择器 $实现原理
2009/12/02 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
json的定义、标准格式及json字符串检验
2014/05/11 Javascript
js实现文本框选中的方法
2015/05/26 Javascript
基于jQuery+JSON的省市二三级联动效果
2015/06/05 Javascript
使用Node.js为其他程序编写扩展的基本方法
2015/06/23 Javascript
jQuery实现三级菜单的代码
2016/05/09 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
require.js中的define函数详解
2017/07/10 Javascript
详解使用angularjs的ng-options时如何设置默认值(初始值)
2017/07/18 Javascript
vue中如何创建多个ueditor实例教程
2017/11/14 Javascript
vue+axios+mock.js环境搭建的方法步骤
2018/08/28 Javascript
跟混乱的页面弹窗说再见
2019/04/11 Javascript
微信小程序 select 下拉框组件功能
2019/09/09 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
vue点击页面空白处实现保存功能
2019/11/06 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
vue通过过滤器实现数据格式化
2020/07/20 Javascript
[05:20]2018DOTA2亚洲邀请赛主赛事第三日战况回顾 LGD率先挺进胜者组决赛
2018/04/06 DOTA
使用Python制作获取网站目录的图形化程序
2015/05/04 Python
Python3中的2to3转换工具使用示例
2015/06/12 Python
python找出因数与质因数的方法
2019/07/25 Python
Python爬虫爬取Bilibili弹幕过程解析
2019/10/10 Python
详解Django3中直接添加Websockets方式
2020/02/12 Python
python3中sys.argv的实例用法
2020/04/24 Python
Python内置函数及功能简介汇总
2020/10/13 Python
css3实现背景动态渐变效果
2019/12/10 HTML / CSS
求两个数的乘积和商数,该作用由宏定义来实现
2013/03/13 面试题
Java程序员面试题
2016/09/27 面试题
简单的项目建议书模板
2014/03/12 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
审美与表现自我评价
2015/03/09 职场文书