zoukankan      html  css  js  c++  java
  • JS_高程5.引用类型(3)Array类型-检测数组

    1. instanceof操作符(ECMAScript3)

      对于一个网页,或者是一个全局作用域而言,使用instanceof操作符来检测数组就可以得到满意的结果。

      语法:if(value instanceof Array){

          //对数组执行某些操作

        }

    eg:

    1  var colors=["red","pink"];
    2     var n=18;
    3     var isArray=colors instanceof Array;//返回true
    4     var isArray1=n instanceof Array;//返回false
    5     alert(isArray);
    6     alert(isArray1);

    注意:

      instanceof操作符在存在多个全局作用域(像一个页面包含多个框架frame)的情况下,var isArray=value instanceof Array;要返回true,value必须是数组,而且还必须与Array构造函数在同一全局作用域中。(Array是window的属性)如果value是另一个框架中定义的数组,那么会返回false。

      instanceof具体的用法参考  https://www.ibm.com/developerworks/cn/web/1306_jiangjj_jsinstanceof/#icomments

      

    2. Array.isArray()方法(ECMAScript5)

    语法:

      if(Array.isArray(value)){

        //对数组执行某些操作

      }

    eg:

      

    1 var colors=["red","pink"];
    2     var n=18;
    3     var isArray=Array.isArray(colors);//返回true
    4     var isArray1=Array.isArray(n);//返回flase
    5     alert(isArray1);
    6     alert(isArray);

    注意:

      支持Array.isArray()方法的浏览器有IE9+,Firefox 5+,Opera 10.5+和Chrom。要在尚未实现这个方法的浏览器中准确检查数组,参考下面的方法。

      由于在任何值上调用Obiect原生的toString()方法,都会返回[object NativeConstructorName]格式的字符串。

    eg:

    1 var colors=["red","pink"];
    2     var number1=20;
    3     var obj=new Object();
    4     alert(Object.prototype.toString.call(colors));//"[object Array]"
    5     alert(Object.prototype.toString.call(number1));//"[object Number]"
    6     alert(Object.prototype.toString.call(obj));//"[object Object]"

      由于原生的构造函数与全局作用域无关因此使用toString()就能保证返回一致的值。利用这一点,可以创建如下函数进行判断:高程书P597

    1  function isArray(value){
    2         return Object.prototype.toString.call(value)=="[object Array]";
    3     }
  • 相关阅读:
    xpage 获取 附件
    Win8.1应用开发之离线缓存
    分布式系统设计系列 -- 基本原理及高可用策略
    hdu3652(数位dp)
    HDU 4869 Turn the pokers
    ubuntu 安装mysql, 以及全然又一次安装的方法
    Wildcard matching
    并发编程:创建进程 join方法 进程间的数据隔离问题 进程对象以及其他方法 守护进程 互斥锁
    网络通信 : 粘包解决的实例 socketserver模块 udp的使用 简易版QQ的实现 异常处理机制的知识点
    TCP通信: scoket模块 黏包问题 连接循环 通信循环
  • 原文地址:https://www.cnblogs.com/LinSL/p/6197126.html
Copyright © 2011-2022 走看看