源代码:
<!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”;
// 欲知后续如何 且听我下回补充。