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>

JavaScript--对象-检查一个对象是否是数组的更多相关文章

  1. 《JavaScript 闯关记》之数组

    数组是值的有序集合.每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引. JavaScript 数组是无类型的,数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的类型 ...

  2. 简述JavaScript对象、数组对象与类数组对象

    问题引出 在上图给出的文档中,用JavaScript获取那个a标签,要用什么办法呢?相信第一反应一定是使用document.getElementsByTagName('a')[0]来获取.同样的,在使 ...

  3. JavaScript学习总结(二)数组和对象部分

    pt学习总结(二)数组和对象部分 2016-09-16    分类:WEB开发.编程开发.首页精华暂无人评论     来源:trigkit4 分享到:更多1 对象部分 Object类型 Object  ...

  4. [Effective JavaScript 笔记]第51条:在类数组对象上复用通用的数组方法

    前面有几条都讲过关于Array.prototype的标准方法.这些标准方法被设计成其他对象可复用的方法,即使这些对象并没有继承Array. arguments对象 在22条中提到的函数argument ...

  5. 让操作javascript对象数组像.net lamda表达式一样

    让操作javascript对象数组像.net lamda表达式一样 随着web应用程序的富客户端化.ajax的广泛使用及复杂的前端业务逻辑.对js对象数组.json数组的各种操作越来越多.越来越复杂. ...

  6. 第一百零三节,JavaScript对象和数组

    JavaScript对象和数组 学习要点: 1.Object类型 2.Array类型 3.对象中的方法 什么是对象,其实就是一种类型,即引用类型.而对象的值就是引用类型的实例.在ECMAScript中 ...

  7. 浅谈JavaScript和DOM中的类数组对象

    JavaScript是一门弱类型语言,它的数据类型分为两大类:简单数据类型(5种:Undefined.Null.Boolean.Number.String)和复杂数据类型(1种:Object).Obj ...

  8. JavaScript对象之关联数组

    Tip: 内容摘抄自<JavaScript权威指南>,看过该书的同学可以忽略本文. 存取一个对象的属性的方式: obj.attr; obj["attr"]; 两者最重要 ...

  9. JavaScript 对象与数组参考大全

    http://www.cnblogs.com/meil/archive/2006/06/28/437527.html本文列举了各种JavaScript对象与数组,同时包括对上述每一对象或数组所完成工作 ...

随机推荐

  1. 一篇故事讲述了计算机网络里的基本概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等...

    计算机主机网关的作用是什么? 假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的网关.当你想跟院子里的某个小伙伴玩,只要你在院子里大喊一声 ...

  2. weblogic jsp 不生效解决方法

    1. 检查weblogic.xml配置文件,其中如果有: <jsp-descriptor> <jsp-param> <param-name>pageCheckSec ...

  3. Eclipse启动jboss局域网无法访问的问题

    在启动jboss的时候加上参数 -b 0.0.0.0(本地用localhost也能访问,用ip也能访问)

  4. Unique Paths ——LeetCode

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  5. vtk 导出结果图片

    项目中需要将渲染结果导出为图片. (1)  一开始搜了vtk的方法,发现: http://blog.csdn.net/lbluekey/article/details/3346312 http://w ...

  6. 数据结构——foodfill 八连块问题

    Description Due to recent rains, water has pooled in various places in Farmer John's field, which is ...

  7. DOM解析原理

    用于处理XML文档的DOM元素属性 childNodes:返回当前元素所有子元素的数组: firstChild:返回当前元素的第一个下级子元素: lastChild:返回当前元素的最后一个子元素: n ...

  8. Git 的优点

    1. 快速 如果你每移动一下鼠标都要等待五秒,是不是很受不了?版本控制也是一样的,每一个命令多那么几秒钟,一天下来也会浪费你不少时间.Git的操作非常快速,你可以把时间用在别的更有意义的地方. 2. ...

  9. 深入理解java垃圾回收算法

    Java虚拟机的内存区域中,程序计数器.虚拟机栈和本地方法栈三个区域是线程私有的,随线程生而生,随线程灭而灭:栈中的栈帧随着方法的进入和退出而进行入栈和出栈操作,每个栈帧中分配多少内存基本上是在类结构 ...

  10. View获取焦点

    <EditText android:id="@+id/et_phoneNum" android:layout_width="match_parent" a ...