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的三种$()
Dec 30 Javascript
菜鸟javascript基础资料整理3 正则
Dec 06 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
Apr 07 Javascript
JS函数重载的解决方案
May 13 Javascript
一个支付页面DEMO附截图
Jul 22 Javascript
JavaScript事件学习小结(三)js事件对象
Jun 09 Javascript
vue.js初学入门教程(1)
Nov 03 Javascript
简单实现jQuery手风琴效果
Aug 18 jQuery
vue实现登陆登出的实现示例
Sep 15 Javascript
Vue加载组件、动态加载组件的几种方式
Aug 31 Javascript
vue 实现边输入边搜索功能的实例讲解
Sep 16 Javascript
vue.js实现备忘录demo
Jun 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
Ajax PHP简单入门教程代码
2008/04/25 PHP
获取PHP警告错误信息的解决方法
2013/06/03 PHP
PHP实现生成透明背景的PNG缩略图函数分享
2014/07/08 PHP
php中多维数组按指定value排序的实现代码
2014/08/19 PHP
php中的动态调用实例分析
2015/01/07 PHP
js 学习笔记(三)
2009/12/29 Javascript
两个比较有用的Javascript工具函数代码
2010/02/17 Javascript
js的匿名函数使用介绍
2013/12/11 Javascript
单元选择合并变色示例代码
2014/05/26 Javascript
Nodejs Post请求报socket hang up错误的解决办法
2014/09/25 NodeJs
jQuery+css实现百度百科的页面导航效果
2014/12/16 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
2016/06/17 Javascript
JS对象创建的几种方式整理
2017/02/28 Javascript
jQuery插件HighCharts实现的2D条状图效果示例【附demo源码下载】
2017/03/15 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
2019/01/21 Javascript
vue 地图可视化 maptalks 篇实例代码详解
2019/05/21 Javascript
通过实践编写优雅的JavaScript代码
2019/05/30 Javascript
微信小程序tabBar设置实例解析
2019/11/14 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
js将URL网址转为16进制加密与解密函数
2020/03/04 Javascript
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
windows及linux环境下永久修改pip镜像源的方法
2016/11/28 Python
pygame 精灵的行走及二段跳的实现方法(必看篇)
2017/07/10 Python
Python根据成绩分析系统浅析
2019/02/11 Python
Python之pymysql的使用小结
2019/07/01 Python
Python实现的统计文章单词次数功能示例
2019/07/08 Python
Pytorch Tensor基本数学运算详解
2019/12/30 Python
凯特王妃父母建立的派对用品网站:Party Pieces
2017/05/28 全球购物
英国最大的邮寄种子和植物公司:Thompson & Morgan
2017/09/21 全球购物
UNOde50美国官网:西班牙珠宝品牌
2020/08/15 全球购物
详细的本科生职业生涯规划范文
2014/09/16 职场文书
机关职员工作检讨书
2014/10/23 职场文书
委托证明范本
2014/11/25 职场文书
个人先进材料范文
2014/12/30 职场文书
MySQL 数据库范式化设计理论
2022/04/22 MySQL
MySQL数据库之存储过程 procedure
2022/06/16 MySQL