zoukankan      html  css  js  c++  java
  • JavaScript--对象-检查一个对象是否是数组

     1 <!doctype html>
     2 <html>
     3  <head>
     4   <meta charset="UTF-8">
     5   <title>Document</title>
     6   <script>
     7     //鄙视题: 判断一个对象是否是数组,有几种办法:
     8     var obj1={};//Object
     9     var obj2=[1,2,3];//Array
    10     var obj3=function(){};//Function
    11     var obj4={}; obj4.__proto__=[];
    12                //obj4认[]当爹
    13     /*否定: typeof 无法区分数组和对象
    14     console.log(typeof obj1);//object
    15     console.log(typeof obj2);//object
    16     console.log(typeof obj3);//function
    17     */
    18     //1. isPrototypeOf 不但检查直接父对象,而且检查整个原型链
    19     console.log(Array.prototype.isPrototypeOf(obj1));
    20     console.log(Array.prototype.isPrototypeOf(obj2));
    21     console.log(Array.prototype.isPrototypeOf(obj3));
    22     console.log(Array.prototype.isPrototypeOf(obj4));
    23     
    24     //2. constructor 也可检查整个原型链
    25     console.log(obj1.constructor==Array);
    26     console.log(obj2.constructor==Array);
    27     console.log(obj3.constructor==Array);
    28     console.log(obj4.constructor==Array);
    29     
    30     //3. instanceof 也可检查整个原型链
    31       //判断一个对象是否是指定构造函数的实例
    32     console.log(obj1 instanceof Array);
    33     console.log(obj2 instanceof Array);
    34     console.log(obj3 instanceof Array);
    35     console.log(obj4 instanceof Array);
    36     
    37   /*4. 每个对象内部都有一个属性: class
    38         记录了创建对象时使用的类型名
    39         如何访问对象内部的class:
    40             只能调用原生的toString方法
    41             Object.prototype.toString();
    42             "[object Object]"
    43               对象   class
    44         强行调用原生toString:
    45           原生toString.call(替代this的对象)
    46             call做2件事: 1. 执行函数;2. 替换this!
    47           Object.prototype.toString()
    48                 this->Object.prototype
    49           Object.prototype.toString.call(obj1)
    50                 this->obj1
    51                 ->在执行时,相当于obj1.toString()*/
    52     
    53     console.log(
    54       Object.prototype.toString.call(obj1)
    55       =="[object Array]");//原生的
    56     console.log(
    57       Object.prototype.toString.call(obj2)
    58       =="[object Array]");
    59     console.log(
    60       Object.prototype.toString.call(obj3)
    61       =="[object Array]");
    62     console.log(
    63       Object.prototype.toString.call(obj4)
    64       =="[object Array]");
    65   
    66   /*5. ES5: isArray*/
    67   //如果浏览器不支持isArray方法
    68     //就在?添加isArray方法
    69       //参数: obj要检查的对象
    70       //函数体: 
    71       //1. 强行调用原生toString方法输出obj的class属性//2. 如果返回的结果是"[object Array]"才返回true
    72             //否则返回false
    73 
    74    document.write(Array.isArray(obj1)+"<br>");
    75    document.write(Array.isArray(obj2)+"<br>");
    76    document.write(Array.isArray(obj3)+"<br>");
    77    document.write(Array.isArray(obj4)+"<br>");
    78   </script>
    79  </head>
    80  <body>
    81   
    82  </body>
    83 </html>
  • 相关阅读:
    Hadoop综合大作业
    hive基本操作与应用
    理解MapReduce计算构架
    熟悉HBase基本操作
    Hadoop综合大作业
    hive基本操作与应用
    理解MapReduce计算构架
    熟悉HBase基本操作
    熟悉常用的HDFS操作
    爬虫大作业
  • 原文地址:https://www.cnblogs.com/chenzeyongjsj/p/5517562.html
Copyright © 2011-2022 走看看