理解矛盾:為什麼帶有物件的typeof 陣列回傳「Object」
開發者可能會遇到一個令人驚訝的現象:在數組上呼叫typeof 時包含對象,它莫名其妙地返回“對象”而不是“數組”。本文深入探討了這種看似矛盾的行為。
透過檢查範例,讓我們說明問題:
<code class="javascript">$.ajax({ url: 'http://api.twitter.com/1/statuses/user_timeline.json', data: { screen_name: 'mick__romney'}, dataType: 'jsonp', success: function(data) { console.dir(data); //Array[20] alert(typeof data); //Object } });</code>
雖然 console.dir(data) 正確地將變數識別為數組,但 typeof data 不一致地傳回「Object」。
解釋在於 JavaScript 的特殊規範,其中 typeof 運算子傳回物件內部 [[Class]] 屬性的型別。對於數組,它們的 [[Class]] 屬性設定為“Array”,但當被物件包圍時,[[Class]] 屬性變更為“Object”。
確保準確的類型檢查,開發者可以採用多種方法:
透過理解這種特性並利用這些技術,開發人員可以在 JavaScript 程式碼中有效地處理物件陣列。
以上是為什麼 JavaScript 中包含物件的陣列「typeof」會回傳「Object」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!