博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript 判断变量是否为数组Array的方法
阅读量:4626 次
发布时间:2019-06-09

本文共 1269 字,大约阅读时间需要 4 分钟。

1. 不能用typeof ,因为typeof 只能判断基本类型,不能判断引用类型

  var 
ary = [1,23,4];
  console.log(
typeof 
ary); 
//输出结果是Object

  上面的办法并不能实时的检测出是否是数组,只能判断其类型,所以说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种方法局限性。

  instanceof 和constructor 判断的变量,必须在当前页面声明的,比如,一个页面(父页面)有一个框架,框架中引用了一个页面(子页面),在子页面中声明了一个ary1,并将其赋值给父页面的一个变量 ary2,

  这时判断该变量,Array == ary2.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));
5 好用的判断类型的方式( 高阶函数的应用)

function isType(type){

  return function(o){
    return Object.prototype.toString.call(o) === "[object " + type + "]";
  }
}
var isArray = isType("Array");
var a = [1,2,34];
console.log(isArray(a))

转载于:https://www.cnblogs.com/FineDay/articles/6688846.html

你可能感兴趣的文章
DFS中的奇偶剪枝(技巧)
查看>>
dos命令的使用
查看>>
Android中微信抢红包助手的实现
查看>>
斐波那契数列
查看>>
HDU1201+简单题
查看>>
WIN32 API编程之 tap顺序
查看>>
sql 查看表的记录数
查看>>
常见注入手法第三讲,远程线程注入
查看>>
05-人脸识别-FaceNet的感性认识
查看>>
用HTML+CSS编写一个计科院网站首页的静态网页
查看>>
临时记录
查看>>
Liunx之django项目部署
查看>>
Flask-websocket实现聊天功能
查看>>
kmeans 聚类 k 值优化
查看>>
测试开发知识体系
查看>>
springcloud(十二):使用Spring Cloud Sleuth和Zipkin进行分布式链路跟踪
查看>>
2019.04.09 电商24 订单模快 ORM
查看>>
高性能JS--载入脚本并执行
查看>>
hustwinterC - Happy Matt Friends(dp解法)
查看>>
手机滚动条拖动
查看>>