方案一:instanceof
變量 instanceof 類型 返回的是布爾值 true false
例: var a = [] a instanceof Array
方案二:原型prototype + toString + call()
首先: Object.prototype.toString.call(variable)來判斷,返回值是字符串
其次: Object.prototype.toString.call(variable).indexOf('Array') 如果變量對象是純數組,返回的數字不是-1
最后: Object.prototype.toString.call(variable).indexOf('Array') !== -1 比對數值是否等於-1就能判斷是否是數組類型 是為true
方案三:原型prototype + isPrototypeOf()
Array.prototype.isPrototypeOf(variable)
isPrototypeOf() 函數 : 用於指示對象是否存在於一個對象的原型鏈中。如果存在返回true,反之返回false。該方法屬Object對象,由於所有的對象都繼承了Object的對象實例,因此幾乎所有的實例對象都可以使用該方法。如果variable的原型鏈中存在Array對象,就會返回true,也就說明variable是數組類型。
方案四:構造函數 constructor
variable.constructor
variable.constructor.toString()
variable.constructor.toString().indexOf("Array") !== -1
一個數組類型的實例,其原型__proto__.constructor右邊是Array關鍵字,再拿到字符串,最后查找字符串中Array關鍵字的位置是否等於-1
方案五:數組方法 isArray()
Array.isArray(variable)