判斷對象是否是數組的方法instanof、isArray

instanceof操作符合Array.isArray()都可以判斷一個對象是不是數組,但是Array.isArray()優於instanceof操作符,instance操作符的問題再於假定它只有一個全局執行環境。如果網頁中國包含多個框架,那實際上就存在兩個以上的全局執行環境,從而存在兩個以上不同版本的Array構造函數,如果你從一個框架向另外一個框架傳入一個數組,那麼傳入的數組與第二個框架中原生創建的構造函數分別具有不同的構造函數。Array.isArray()只負責判斷這個對象是不是數組,而不管他在哪個全局環境下創建的。

體會下區別:

var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
var xArray = window.frames[window.frames.length-1].Array;
var arr = new xArray();
Array.isArray(arr);  // true
arr instanceof Array; // false

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章