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 验证表单(form)中的单选(radio)值
Sep 08 Javascript
javascript 在网页中的运用(asp.net)
Nov 23 Javascript
JavaScript Accessor实现说明
Dec 06 Javascript
javascript中利用柯里化函数实现bind方法
Apr 29 Javascript
Javascript基础_简单比较undefined和null 值
Jun 14 Javascript
JS常见算法详解
Feb 28 Javascript
前端主流框架vue学习笔记第一篇
Jul 26 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
Feb 01 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
Sep 21 Javascript
JS控制GIF图片的停止与显示
Oct 24 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
Apr 22 Javascript
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
May 06 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 Cookie的一个使用注意点
2008/11/08 PHP
比较简单的百度网盘文件直链PHP代码
2013/03/24 PHP
深入讲解PHP Session及如何保持其不过期的方法
2015/08/18 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
2015/12/02 PHP
用JS操作FRAME中的IFRAME及其内容的实现代码
2008/07/26 Javascript
JS的事件绑定深入认识
2014/06/26 Javascript
jQuery中prependTo()方法用法实例
2015/01/08 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
nodejs修复ipa处理过的png图片
2016/02/17 NodeJs
node.js的事件机制
2017/02/08 Javascript
jQuery中layer分页器的使用
2017/03/13 Javascript
react-native之ART绘图方法详解
2017/08/08 Javascript
js实现导航跟随效果
2018/11/17 Javascript
微信JS-SDK updateAppMessageShareData安卓不能自定义分享详解
2019/03/29 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
在js文件中引入(调用)另一个js文件的三种方法
2020/09/11 Javascript
详解JavaScript中的链式调用
2020/11/27 Javascript
Python中的Classes和Metaclasses详解
2015/04/02 Python
介绍Python中的文档测试模块
2015/04/28 Python
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
Python实现比较两个列表(list)范围
2015/06/12 Python
python通过elixir包操作mysql数据库实例代码
2018/01/31 Python
python第三方库学习笔记
2020/02/07 Python
基于python纯函数实现井字棋游戏
2020/05/27 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
施华洛世奇日本官网:SWAROVSKI日本
2018/05/04 全球购物
会计毕业生自荐信
2013/11/21 职场文书
音乐专业自荐信
2014/02/07 职场文书
商务日语专业毕业生自荐信
2014/03/27 职场文书
感情真挚的毕业生求职信
2014/07/19 职场文书
防邪知识进家庭活动方案
2014/08/26 职场文书
七一活动主持词
2015/06/29 职场文书
2015年教师国培感言
2015/08/01 职场文书
教师岗位说明书
2015/09/30 职场文书
2016年十一促销广告语
2016/01/28 职场文书