zoukankan      html  css  js  c++  java
  • 类型检测汇总!typeof 和 instanceof 和isArray

     var arr = [1, 2];
     alert(arr instanceof Array);//true
    

    以上老方法判断是否是数组,存在一个问题,就是它只适用于单执行环境(窗口),如果该窗口有其他框架(比如 iframe)则会出问题

    比如:

    html: <iframe frameborder="1" name="result" id="result"></iframe>
    
    script:  document.querySelector('#result').src = 'demo5.html';
    
    //下面是deml5界面代码
    
     alert(parent.arr instanceof Array);//false
     alert(parent.arr instanceof parent.window.Array);//true  这样才是true

     另外  js5 新增判断方法  是 Array.isArray(value) 统一了判断方法

    typeof 只适用于检测基本数据类型,引用类型 统一都是object 所以,没什么用处对于检测引用类型时候

        //js中一共六种数据类型
        //5种基本类型 Undefined Null Boolean String Number
        //一种复杂类型 Object
    
        //type of 共会返回六种结果
            //undrfined-- 如果这个值未定义
            //boolean-- 如果这个值是布尔值
            //string-- 如果这个值字符串
            //number-- 如果这个值是数字
            //object-- 如果这个值是对象或者null(null 被看成是一个空对象的引用)
            //function-- 如果这个值是函数
    
        var str= 'aa';//typeof---string
        var num= 1;//typeof---number
        var b= true;//typeof---boolean
        var u;//typeof---undefined
        //以上是基本类型
        var func= function(){}//typeof---function
        //以上是比较特殊的对象类型--函数类型
        var n=null;//typeof---object
        var o= new Object();//typeof---object
        var arr= [1,2];//typeof---object
        //以上是对象类型
        
        //所以 typeof 只适合检测基本类型 和 函数

      

      # 严格判断方法:Object.prototype.toString.call([]); //"[object Array]"

    总结:typeof 用于判断基本类型和function

       instanceof  用于单一环境下 对象类型(如果用基本类型调用此方法 始终返回false)

       isArray 可以跨环境判断

  • 相关阅读:
    在.net中读写XML方法的总结
    C# 中的委托和事件
    周永亮 《我是职业人》
    .net序列化及反序列化
    .NET中的参数
    linux解压tar命令
    Linux date 命令使用技巧
    经典.net面试题目
    switch……case里的case能不能同时定义多个值呢?
    这里将是我学习进步的一个见证点
  • 原文地址:https://www.cnblogs.com/WhiteHorseIsNotHorse/p/6261770.html
Copyright © 2011-2022 走看看