首頁 >web前端 >js教程 >JavaScript中使用Object.prototype.toString判斷是否為陣列_javascript技巧

JavaScript中使用Object.prototype.toString判斷是否為陣列_javascript技巧

WBOY
WBOY原創
2016-05-16 16:06:321245瀏覽

為什麼要用Object.prototype.toString而不是Function.prototype.toString或是它?這是和他們的toString解釋方式有關的。下面是ECMA中Object.prototype.toString的解釋:

複製程式碼 程式碼如下:

Object.prototype.toString( )

When the toString method is called, the following steps are taken:
1. Get the [[Class]] property of this object.
2. Compute a string value by concatenating the three strings “[object “, Result (1), and “]”.
3. Return Result (2)


其過程簡單說來就是:1、取得物件的類別名稱(物件類型)。 2、然後將[object、取得的類別名稱、]組合併回傳。
ECMA中對Array有以下說明:
複製程式碼 程式碼如下:

The [[Class]] property of the newly constructed object is set to “Array”.

因此我們用以下程式碼來偵測數組:
複製程式碼 程式碼如下:

function isArray(o) {   return Object.prototype.toString.call(o) === '[object Array]';  } 

這種方式既解決了instanceof存在的跨頁面問題,也解決了屬性偵測方式所存在的問題,實在是一種妙招,一個很好的解決方案。
除此之外,這種解決辦法也可以應用於判斷Date,Function等類型的物件。
 
另外還有幾個方法:
複製程式碼 程式碼如下:

var arr = []; return arr instanceof Array; 

如果有其他好的方法不妨貼出來。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn