相關推薦:《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);
#用法:arr.constructor === Array
#Object的每個實例都有建構子constructor
,用來保存著用來建立目前物件的函式
let arr = []; console.log(arr.constructor === Array); // true
用法:arr instanceof Array
instanceof
主要是用來判斷某個實例是否屬於某個物件
let arr = []; console.log(arr instanceof Array); // true
註:instanceof運算子的問題在於,它假定只有一個全域環境。如果網頁中包含多個框架,那麼實際上就存在兩個以上不同的全域執行環境,從而存在兩個以上不同版本的Array建構子。如果你從一個框架向另一個框架傳入一個數組,那麼傳入的數組與在第二個框架中原生創建的數組分別具有各自不同的構造函數。 (紅寶書88頁上的原話)
##用法:Array.prototype.isPrototypeOf(arr)
#Array.prototype 屬性表示Array 建構子的原型
#isPrototypeOf()可以用來測試一個物件是否存在於另一個物件的原型鏈上。
let arr = []; console.log(Array.prototype.isPrototypeOf(arr)); // true
#用法:Object.prototype.toString.call (arr) === '[object Array]'
Array.prototype上重寫了toString,
toString.call( arr)其實是透過原型鏈呼叫了。
let arr = []; console.log(Object.prototype.toString.call(arr) === '[object Array]'); // true
用法:Array.prototype.isPrototypeOf( arr)
Array.prototype 屬性表示Array 建構子的原型
let arr = []; console.log(Array.prototype.isPrototypeOf(arr)); // true
// 基本类型 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中文網其他相關文章!