• js数组类型判断与数据类型判断回顾


    判断一个对象是否是数组方法有多种:

    一、Array.isArray()函数

    在ECMAScript5中可以通过Array.isArray()来做这件事:

    Array.isArray({});    //false
    Array.isArray([]);    //true

     二、instanceof

    instanceof操作符用于判断一个变量是否为一个对象的实例,只能用于简单的情形:

    [] instanceof Array;    //true
    {} instanceof Array;   //false
    d=new Date();
    d instanceof Date;      //true d是由Date()创建的
    d instanceof Object;    //true 所有的对象都是Object的实例

    instanceof的问题:1、检测对象的继承关系,而不检测创建对象的构造函数,无法通过对象来获得类名,只能检测对象是否属于指定的类名;2、在web浏览器中,可能存在多个窗口或多个窗体,每个窗口都有自己js环境和自己的全局对象,每个对象都有自己的一组构造函数,因此一个窗体的对象不可能是另外窗体中的构造函数的实例,窗体中的混淆不常发生。

    三、prototype与call

    Object.prototype.toString.call([])==="[object Array]"    //true
    Object.prototype.toString.call({})==="[object Array]"    //false

    四、constructor

    constructor返回对象的构造函数

    [].constructor==Array    //true
    {}.constructor==Array    //false

    注意:使用instanceof和construtor来判断数组 ,被判断的数组必须是在当前页面声明的。比如,在一个子页面中声明了一个数组,并将其值赋给父页面的一个变量,这时判断这个变量:变量.constructor==Array;此时返回false。

    原因:数组属于引用数据,在传递过程中仅仅传递引用地址;每个页面Array原生对象的所引用的地址是不一样的,也就是说父页面的Array并不等于子页面的Array。

    其他类型的判断方法和数组类似,下面是关于constructor和typeof返回值的一个列表:

    变量 变量.constructor typeof 变量
    []   Array object
    {} Object object
    var f=function(){} Function function
    "a string" String string
    88 Number number
    True Boolean boolean
    var a / undefined
    null / object
    new User() User object
  • 相关阅读:
    30 个最好的jQuery表单插件
    Jquery Tools——不可错过的Jquery UI库(三)
    RedHat Linux AS5安装Oracle 10g 及常见问题
    老婆一直在你身旁,写给咱们的孩子
    又一篇关于中航信的文章
    Java自定义异常
    php文件复制升级
    PHP文件复制
    hdu 2428
    hdu 1358 KMP的应用
  • 原文地址:https://www.cnblogs.com/aaron-shu/p/4080084.html
Copyright © 2020-2023  润新知