js中沒有一個好的機制來區分數組和對象。typeof運算符報告數組的類型是‘object’,要確定一個對象是否是數組我們可以通過自己定義的isArray方法來判斷。
先小結以下typeof運算符:
字符串、數字、布爾類型typeof運算符分別返回string, number, boolean。
typeof(null)返回object
自定義方法區分數組和對象:
function isArray(obj) {
return obj && typeof(obj) === 'object' && obj.constructor === Array
}
該方法在識別從不同的窗口或幀(frame)裏的構造函數時會失敗。有一個更好的方法判斷一個對象是否時數組:
function isArray(obj) {
return Object.prototype.toString.apply(obj) === '[object Array]';
}
參考:《JavaScript語言精粹》