ES 5 中 判断数组的方法

源代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div>1</div>
    <div>2</div>
    <div>3</div>
  <script type="text/javascript">
      // 获取类数组对象
      var obj = document.getElementsByTagName("div");
      // 定义数组
      var arr = [];   
  </script>
</body> 

方法一: 判断对象的类型(toString)

console.log(Object.prototype.toString.call(obj) === "[object Array]");
console.log(Object.prototype.toString.call(arr) === "[object Array]");

方法二: 判断是否是实例化对象(instanceOf)

     instanceOf用于判断一个变量是否某个对象的实例。

   console.log(obj instanceof Array);
    console.log(arr instanceof Array);
 
    // 构造函数是Object的时候, 也是true
    console.log(arr instanceof Object);

方法三: 判断构造函数是否是Array(constructor)

console.log(obj.constructor === Array);
console.log(arr.constructor === Array);
console.log(arr.constructor === Object);    // false

方法四: 数组的静态(isArray)

console.log(Array.isArray(obj));
console.log(Array.isArray(arr));

注意:

console.log(arr instanceof Object);

可以确定数组是一个对象,但不能判断是否是数组。

obj的的__proto__ 指向HTMLCollection最终指向Object。

HTMLCollection。 他本身是一个对象,一个类数组对象。而并非是一个数组。

直接对HTMLCollection是不能采用对dom元素的操作方式来操作的。比如htmlCL.style.color=”red”;是无效的。原因很简单,htmlCL并不是dom对象,她不具备dom所拥有的属性;

当然我们可以使用数组式选择方式来选择其中的一个元素。比如
htmCl[0];返回的则是对象里面的第一个元素,则可以对他进行操作
如:htmCl[0].style.color=”red”;

//   欲知后续如何 且听我下回补充。   

  

原文地址:https://www.cnblogs.com/wehome/p/10180300.html