类型检测汇总!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 可以跨环境判断

 

转载于:https://www.cnblogs.com/WhiteHorseIsNotHorse/p/6261770.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值