1、從建構子入手,obj instanceof Array
typeof 和instanceof 都可以用來判斷變數,typeof方法傳回一個字串,來表示資料的型別; 但是typeof來判斷資料型別其實並不準確。例如數組、正規、日期、物件的typeof回傳值都是object,這就會造成一些誤差。
而instanceof 運算子用來測試一個物件在其原型鏈中是否存在一個建構函式的 prototype 屬性,傳回一個布林值。
2、從原型入手,Array.prototype.isPrototypeOf(obj);
利用isPrototypeOf()方法,判定Array是不是在obj的原型鏈中,如果是,則傳回true,否則false。
3、Array.isArray()方法
#其實js已經提供了判斷是不是數組類型的方法,如下:
在MDN中就比較了isArray和instanceof的區別,當Array.isArray()不可用的使用,MDN做瞭如下的補丁,說明還是比較推薦使用前面講的第三種方法 Object.prototype.toString.call(obj)。
4、根據物件的class屬性(類別屬性),跨原型鏈呼叫toString()方法。
解釋一下,在js中一個物件一旦被創建,在內部會攜帶創建物件的類型名,一旦創建就不能被修改了。那麼要怎麼取得這個物件的類型名稱呢?
js中提供了,呼叫物件原型中的toString方法, Object.prototype.toString.call(obj);因為許多物件繼承的toString()方法都被重寫了,為了能夠呼叫正確的toString ()版本,也就是最原始的版本。可以使用Function.call()的方法,其中call可以這麼理解,相當於obj去藉用這個Object.prototype.toString();
那麼有了這個方法,取得物件名稱可以這樣取得:
或
#推薦教學:java開發入門
#################java開發入門## ####以上是java判斷物件是否為數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!