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

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

青灯夜游
發布: 2021-01-11 18:29:03
轉載
3956 人瀏覽過

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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板