zoukankan      html  css  js  c++  java
  • 检测js对象是不是数组类型?

    面试时候被人问如何检测一个未知变量是不是数组类型,丢脸啊,老祖宗的脸都丢没了,这都不会,回家啃书本去吧!!!

    var a = [];
    方法一:Array.isArray([])  //true

    typeof a 在这里是帮不上忙的呦,对于数组类型返回的是object,并且是对于除了函数以外的所有对象都是如此,心累吧,瞎忙活!

    方法二:a instanceof Array  //true
    但是不能视为一个可靠的数组检测方法。
    问题在于:web浏览器中有可能有多个窗口或者frame存在,每个窗口都有自己的js环境,有自己的全局对象window,每个全局对象都有自己的一组构造函数,都是不相等的呦,因此一个窗口中的对象不可能是另外一个窗口中的构造函数的实例。窗体之间的混淆不常发生。

    这里有个小伙伴踩坑的记录:https://www.cnblogs.com/laiqun/p/5645801.html

    方法三:检测对象的类属性,对于数组来说该属性的值总是‘Array’,

    Object.prototype.toString()方法进行判断,因此isArray()函数的代码可以酱紫写

     var isArray = Function.isArray || function(o){
         return typeof o === 'object' &&
         Object.prototype.toString.call(o) ==='[object Array]';
     }
  • 相关阅读:
    [转载]qemu-kvm安装配置
    Hadoop通过c语言API访问hdfs
    hadoop和hdfs环境搭建
    OpenCV installation for Ubuntu 12.04
    homework-01
    linux命令2
    压缩tar
    anaconda 安装opencv
    anconda安装第三方库
    开源代码
  • 原文地址:https://www.cnblogs.com/tangjiao/p/8986696.html
Copyright © 2011-2022 走看看