JavaScript判断数组的方法

一、Array.isArray

ES5新增的数组方法,Array.isArray应该是我们最先想到的判定方式,现在应用的也比较广泛。

const arr = [1,2,3,4]
Array.isArray(arr)    // true

二、instanceof

一般来说,instanceof关键字,是用来判断某个元素是否某对象构造函数实例。在数组判断上,instanceof关键字也可以进行数组的判定。

const arr = [1, 2, 3, 4]
arr instanceof Array   // true

三、Object.prototype.toString.call(最优方法)

对象的toString方式也可以判定数组类型,一般来说这种方式的判定是各大库的一种Array.isArray的代替实现。

例如,polyfill中,就是如此实现:

if (!Array.isArray) {
    
    
  Array.isArray = function(arr) {
    
    
    return Object.prototype.toString.call(arr) === '[object Array]';
  };
}
 
const arr = [1, 2, 3, 4]
Object.prototype.toString.call(arr) === '[Object Array]'   // true

四、constructor

除了以上的方式之外,我们还可以通过构造函数来判定:

const arr = [1, 2, 3, 4]
arr.constructor === Array  // true
arr.__proto__.constructor === Array //true

参考:https://www.cnblogs.com/qixingduanyan/p/11725557.html

猜你喜欢

转载自blog.csdn.net/weixin_44019523/article/details/114011694