本節書摘來自異步社群《javascript面向對象精要》一書中的第1章,第1.7節,作者:【美】nicholas c. zakas 譯者: 胡世傑 更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
雖然instanceof可以鑒别數組,但是有一個例外會影響網頁開發者:javascript的值可以在同一個網頁的不同架構之間傳來傳去。當你試圖鑒别一個引用值的類型時,這就有可能成為一個問題,因為每一個頁面擁有它自己的全局上下文——object、array以及其他内建類型的版本。結果,當你把一個數組從一個架構傳到另一個架構時,instanceof就無法識别它,因為那個數組是來自不同架構的array的執行個體。
為了解決這個問題,ecmascript 5引入了array.isarray()來明确鑒别一個值是否為array的執行個體,無論該值來自哪裡,該方法對來自任何上下文的數組都傳回true。如果你的環境相容ecmascript 5,array.isarray()是鑒别數組的最佳方法。
大多數環境都在浏覽器和node.js中支援array.isarray()方法。ie8或更早的版本不支援該方法。