Meskipun implementasi JS mungkin melacak nilai seperti itu secara internal, tidak ada cara standar untuk mendapatkannya.
Di masa lalu, varian Javascript Mozilla mengekspos non-standar__count__
, tetapi telah dihapus dengan versi 1.8.5.
Untuk skrip lintas browser Anda terjebak dengan iterasi eksplisit atas properti dan memeriksa hasOwnProperty()
:
function countProperties(obj) {
var count = 0;
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
++count;
}
return count;
}
Dalam kasus implementasi yang mampu ECMAScript 5, ini juga dapat ditulis sebagai (Kudos to Avi Flax )
function countProperties(obj) {
return Object.keys(obj).length;
}
Ingatlah bahwa Anda juga akan kehilangan properti yang tidak dapat dihitung (misalnya, array length
).
Jika Anda menggunakan kerangka kerja seperti jQuery, Prototype, Mootools, $ anything-the-latest-hype, periksa apakah mereka datang dengan API koleksi mereka sendiri, yang mungkin merupakan solusi yang lebih baik untuk masalah Anda daripada menggunakan objek JS asli.