zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    无线鼠标换电池了
    Jython Interactive Servlet Console YOU WILL NEVER KNOW IT EXECLLENT!!! GOOD
    Accessing Jython from Java Without Using jythonc
    jython podcast cool isnt't it?
    Python里pycurl使用记录
    Creating an Interactive JRuby Console for the Eclipse Environment
    微软为AJAX和jQuery类库提供CDN服务
    Download A File Using Cygwin and cURL
    What is JMRI?这个是做什么用的,我真没看懂但看着又很强大
    用curl 发送指定的大cookie的http/https request
  • 原文地址:https://www.cnblogs.com/aaron-shu/p/4080084.html
Copyright © 2011-2022 走看看