判断一个对象是真数组的几种方法

判断一个对象是真数组的几种方法

在js中对对象进行判断时需了解到它是否是一个真数组,例如arguments等类似的虽然以数组的样式(下标值)在存储,但它是一个类数组对象。下面列举几种常见的判断是否为真数组的几种方法
起手式:定义一个类数组和真数组

  <div></div>
  <div></div>
  <div></div>
  <script>
  var divs = document.getElementsByTagName("div"); //类数组
  var arr = [1, 2]//真数组
  </script>

1、对象隐式原型的构造函数判断

	console.log(divs.__proto__.constructor);//ƒ HTMLCollection() { [native code] }
    console.log(arr.__proto__.constructor);//ƒ Array() { [native code] }

真数组都是Array构造出来的对象,所以它的隐式原型的构造属性可以找到Array

2、.toString()方法

	console.log(divs.toString());//[object HTMLCollection]
    console.log(arr.toString());//1,2

伪数组的.toString返回的结果中括号后面的为它的构造函数类型

3、instanceof判断

	console.log(divs instanceof Array);//false
    console.log(arr instanceof Array);//true

运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上

4、Array.isArray()判断

	console.log(Array.isArray(divs));//false
    console.log(Array.isArray(arr));//true

最常见的判断是否是一个数组

5、数组方法来判断

 try {
    
    
      console.log(divs.push(1));//报错
    } catch (e) {
    
    
      console.log(e);
    } finally {
    
    
      console.log("divs没有push方法");
    }
    console.log(arr.push(1));//返回了3

利用数组对象里的方法判断,如果不是数组对象,使用方法会报错

6、判断对象是否在指定对象的原型链上

	console.log(Array.prototype.isPrototypeOf(divs));//false
    console.log(Array.prototype.isPrototypeOf(arr));//true

猜你喜欢

转载自blog.csdn.net/yun_shuo/article/details/114645129
今日推荐