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 表单进行客户端验证demo
Aug 24 Javascript
关于全局变量和局部变量的那些事
Jan 11 Javascript
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
Jan 24 Javascript
JS实现的4种数字千位符格式化方法分享
Mar 02 Javascript
angularjs创建弹出框实现拖动效果
Aug 25 Javascript
bootstrap中使用google prettify让代码高亮的方法
Oct 21 Javascript
javascript填充默认头像方法
Feb 22 Javascript
vue裁切预览组件功能的实现步骤
May 04 Javascript
Node.js Express安装与使用教程
May 11 Javascript
vue-cli3.X快速创建项目的方法步骤
Nov 14 Javascript
Vue路由的模块自动化与统一加载实现
Jun 05 Javascript
vue打开其他项目页面并传入数据详解
Nov 25 Vue.js
浅析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
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
Laravel SQL语句记录方式(推荐)
2016/05/26 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
日期函数扩展类Ver0.1.1
2006/09/07 Javascript
Prototype使用指南之string.js
2007/01/10 Javascript
JS获取各种浏览器窗口大小的方法
2014/01/14 Javascript
Javascript让DEDECMS告别手写Tag
2014/09/01 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
angularJS 入门基础
2015/02/09 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
在IE8上JS实现combobox支持拼音检索功能
2016/05/23 Javascript
Javascript实现图片不间断滚动的代码
2016/06/22 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
2016/08/04 Javascript
Nodejs把接收图片base64格式保存为文件存储到服务器上
2018/09/26 NodeJs
Javascript通过控制类名更改样式
2019/05/24 Javascript
微信小程序获取地理位置及经纬度授权代码实例
2019/09/18 Javascript
VUE.js实现动态设置输入框disabled属性
2019/10/28 Javascript
[01:44]剑指西雅图 展望TI之CIS战队专访
2014/06/25 DOTA
python在多玩图片上下载妹子图的实现代码
2013/08/13 Python
Python中的自省(反射)详解
2015/06/02 Python
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
python+mysql实现教务管理系统
2019/02/20 Python
基于python实现计算且附带进度条代码实例
2020/03/31 Python
使用openCV去除文字中乱入的线条实例
2020/06/02 Python
Python程序慢的重要原因
2020/09/04 Python
Python类成员继承重写的实现
2020/09/16 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
2020/10/15 Python
大学毕业生简单自荐信
2013/11/05 职场文书
料理师求职信
2014/01/30 职场文书
关于运动会的稿件
2014/02/02 职场文书
电台编导求职信
2014/05/06 职场文书
大学生志愿者心得体会
2016/01/15 职场文书
乔迁新居祝福语
2019/11/04 职场文书
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python
一文搞懂python异常处理、模块与包
2021/06/26 Python
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript