Home >Web Front-end >JS Tutorial >6 ways to determine whether it is an array in JS

6 ways to determine whether it is an array in JS

青灯夜游
青灯夜游forward
2021-01-11 18:29:033975browse

6 ways to determine whether it is an array in JS

Related recommendations: "javascript video tutorial"

1. Array.isArray judgment

Usage: Array.isArray(arr)

The Array.isArray method is added in ES5, IE8 and The following is not supported

Array.isArray() Used to determine whether the passed value is an [Array], returning a Boolean value of true; otherwise it returns false.

let arr = [];
console.log(Array.isArray(arr)); // true
// 下面的函数调用都返回 true
Array.isArray([]);
Array.isArray([1]);
Array.isArray(new Array());
Array.isArray(new Array('a', 'b', 'c', 'd'))
// 鲜为人知的事实:其实 Array.prototype 也是一个数组。
Array.isArray(Array.prototype);

2. Constructor judgment

##Usage: arr.constructor === Array

Each instance of Object has a constructor

constructor, which is used to save the function used to create the current object

let arr = [];
console.log(arr.constructor === Array); // true

3. instanceof judgment

Usage: arr instanceof Array

instanceof is mainly used to determine an instance Whether it belongs to an object

let arr = [];
console.log(arr instanceof Array); // true

Note: The problem with the instanceof operator is that it assumes that there is only one global environment. If the web page contains multiple frames, there are actually more than two different global execution environments, and thus more than two different versions of the Array constructor. If you pass an array from one frame to another, the array you pass in will have a different constructor than the array created natively in the second frame. (Original words on page 88 of the Little Red Book)

4. Judgment of isPrototypeOf on the prototype chain

Usage: Array.prototype.isPrototypeOf(arr)

Array.prototype The attribute represents the prototype of the Array constructor

isPrototypeOf()Can be used to test whether an object exists on the prototype chain of another object. <pre class="brush:js;toolbar:false">let arr = []; console.log(Array.prototype.isPrototypeOf(arr)); // true</pre>

5. Object.prototype.toString

##Usage:

Object.prototype.toString.call (arr) === '[object Array]'Array inherits from Object, JavaScript overrides toString on

Array.prototype

, toString.call( arr) is actually called through the prototype chain. <pre class="brush:js;toolbar:false">let arr = []; console.log(Object.prototype.toString.call(arr) === &amp;#39;[object Array]&amp;#39;); // true</pre>

6. isPrototypeOf on the Array prototype chain

Usage:

Array.prototype.isPrototypeOf( arr)

Array.prototype

The attribute represents the prototype of the Array constructor<pre class="brush:js;toolbar:false">let arr = []; console.log(Array.prototype.isPrototypeOf(arr)); // true</pre>

By the way, review the usage of typeof: For reference types, typeof cannot be used to judge, because all returned are objects

// 基本类型
typeof 123;  //number
typeof "abc"; //string
typeof true; //boolean
typeof undefined; //undefined
typeof null; //object
var s = Symbol;
typeof s; //symbol

// 引用类型
typeof [1,2,3]; //object
typeof {}; //object
typeof function(){}; //function
typeof  Array; //function  Array类型的构造函数
typeof Object; //function  Object类型的构造函数
typeof Symbol; //function  Symbol类型的构造函数
typeof Number; //function  Number类型的构造函数
typeof String; //function  String类型的构造函数
typeof Boolean; //function  Boolean类型的构造函数

For more programming-related knowledge, please visit:

Programming Learning

! !

The above is the detailed content of 6 ways to determine whether it is an array in JS. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:segmentfault.com. If there is any infringement, please contact admin@php.cn delete