首頁 >web前端 >js教程 >JS判斷是否為陣列的6種方式

JS判斷是否為陣列的6種方式

青灯夜游
青灯夜游轉載
2021-01-11 18:29:033949瀏覽

JS判斷是否為陣列的6種方式

相關推薦:《javascript影片教學

一、Array.isArray判斷

用法:Array.isArray(arr)

ES5中新增了Array.isArray方法,IE8及以下不支援

Array.isArray() 用於確定傳遞的值是否為[Array], 傳回布林值true;否則它傳回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);

二、constructor判斷

#用法:arr.constructor === Array

#Object的每個實例都有建構子constructor,用來保存著用來建立目前物件的函式

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

三、instanceof 判斷

用法:arr instanceof Array

instanceof 主要是用來判斷某個實例是否屬於某個物件

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

註:instanceof運算子的問題在於,它假定只有一個全域環境。如果網頁中包含多個框架,那麼實際上就存在兩個以上不同的全域執行環境,從而存在兩個以上不同版本的Array建構子。如果你從一個框架向另一個框架傳入一個數組,那麼傳入的數組與在第二個框架中原生創建的數組分別具有各自不同的構造函數。 (紅寶書88頁上的原話)

四、原型鏈上的isPrototypeOf判斷

##用法:Array.prototype.isPrototypeOf(arr)

#Array.prototype  屬性表示Array 建構子的原型

#isPrototypeOf()可以用來測試一個物件是否存在於另一個物件的原型鏈上。

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

五、Object.prototype.toString

#用法:Object.prototype.toString.call (arr) === '[object Array]'

Array繼承自Object,JavaScript在

Array.prototype上重寫了toString,toString.call( arr)其實是透過原型鏈呼叫了。

let arr = [];
console.log(Object.prototype.toString.call(arr) === '[object Array]'); // true

六、Array 原型鏈上的isPrototypeOf

用法:Array.prototype.isPrototypeOf( arr)

Array.prototype  屬性表示Array 建構子的原型

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

順便複習一下typeof的用法:

對於引用類型,不能用typeof來判斷,因為傳回的都是object

// 基本类型
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类型的构造函数

更多程式相關知識,請造訪:

程式設計學習! !

以上是JS判斷是否為陣列的6種方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除