這個問題看似簡單,實際上不簡單。
var arr = [1,2,3]
這裡是字面量方法建立乙個陣列,相當於 var arr = new array(), array是建構函式/類,arr.__proto__ === array.prototype, 像push()方法,其實是array.prototype.push(),所以說arr例項隨想能訪問到push()方法
像 array.isarray() 是 array這個建構函式自身的方法也就是靜態方法,
var arr = [1, 2, 3];
上面這個arr物件,我們可以有很多辦法判斷它是不是陣列
arr.constructor === array; //true 通過建構函式判斷
arr instanceof array; //
true 通過prototype判斷
array.isarray(arr); //
true 通過array類的靜態方法判斷
object.prototype.tostring.call(arr) === "
[object array]
"; //
true 通過tostring方法判斷
我們現在來建立乙個不是陣列的物件
var arr = [1, 2, 3];var obj = object.create(arr);
然後我們用上面3個方法判斷一下
obj.constructor === array; //true 通過建構函式判斷
obj instanceof array; //
true 通過prototype判斷
array.isarray(obj); //
false 通過array類的靜態方法判斷
object.prototype.tostring.call(obj) === "
[object array]
"; //
false 通過tostring方法判斷
只有array.isarray和tostring方法可以正確判斷,所以以後別再用其他方法了~
如何準確判斷乙個物件時陣列
var a 1 2,3 instanceof 操作符和物件的 construct 屬性 var arr 1 2,3 1 console.log arr instanceof array true varfun function console.log fun instanceof function ...
判斷乙個物件是陣列還是物件
一 typeof判斷資料型別 判斷陣列跟物件都返回object console.log typeof null object console.log typeof function function console.log typeof 小a string console.log typeof1 n...
Js中如何判斷乙個物件為陣列型別
在說明如何判斷乙個物件為陣列型別前,我們先鞏固下js的資料型別,js一共有六大資料型別 number string object boolean null undefined。js的陣列是無型別的 陣列元素可以是任意型別,並且同乙個陣列中的不同元素也可能有不同的型別。陣列的元素可以是物件或其他陣列,...