用Object.key(obj).length來取(但是要看瀏覽器有沒有支援,IE9以後才有支援)
--
轉自 http://jayden.logdown.com/posts/164794-javascript-an-objects-length-and-the-length-of-the-array
--
今天看到一個特別的例子,如下:
var arr = []; arr[0] = 'a'; arr[1] = 'b'; arr.foo = 'c'; alert(arr.length);
相信很多人的直覺都是alert出3。但偏偏javascript就是給你alert出2。
經過研究一下才發現,原來在Javascripr裡面,物件長度跟陣列長度不能夠混為一談。
當我們要取陣列(array)長度的時候,可以直接用arr.length來取得。
但是若arr是一個物件(object)的話,便無法用length來取得長度。
所以你用length屬性去取東西的時候,當然就只會回傳Array認得的元素啦!
如果我們直接用length來取得物件(object)長度會怎樣呢? 舉例:
var obj = {};//把陣列改成物件 obj[0] = 'a'; obj[1] = 'b'; obj.foo = 'c'; alert(obj.length);
其結果會是undefined。
要取得物件(object)的長度有兩個辦法。
- 用迴圈來取
var count = 0; var item; for(item in obj){ if (obj.hasOwnProperty(i)) { count++; } }
- 用Object.key(obj).length來取(但是要看瀏覽器有沒有支援,IE9以後才有支援)
Object.key(obj).length
文章標籤
全站熱搜
