Mặc dù các triển khai JS có thể theo dõi một giá trị như vậy trong nội bộ, nhưng không có cách tiêu chuẩn nào để lấy nó.
Trước đây, biến thể Javascript của Mozilla có lỗi không chuẩn__count__
, nhưng nó đã bị loại bỏ với phiên bản 1.8.5.
Đối với tập lệnh trên nhiều trình duyệt, bạn gặp khó khăn với việc lặp lại rõ ràng các thuộc tính và kiểm tra hasOwnProperty()
:
function countProperties(obj) {
var count = 0;
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
++count;
}
return count;
}
Trong trường hợp có khả năng triển khai ECMAScript 5, điều này cũng có thể được viết là (Kudos to Avi Flax )
function countProperties(obj) {
return Object.keys(obj).length;
}
Hãy nhớ rằng bạn cũng sẽ bỏ lỡ các thuộc tính không thể liệt kê được (ví dụ: của một mảng length
).
Nếu bạn đang sử dụng một khuôn khổ như jQuery, Prototype, Mootools, $ any-the-newest-hype, hãy kiểm tra xem chúng có đi kèm với API bộ sưu tập của riêng chúng hay không, đây có thể là giải pháp tốt hơn cho vấn đề của bạn so với việc sử dụng các đối tượng JS gốc.