Aunque las implementaciones de JS pueden realizar un seguimiento de dicho valor internamente, no existe una forma estándar de obtenerlo.
En el pasado, la variante de Javascript de Mozilla expuso el no estándar__count__
, pero se ha eliminado con la versión 1.8.5.
Para las secuencias de comandos entre navegadores, está atrapado en iterar explícitamente sobre las propiedades y verificar hasOwnProperty()
:
function countProperties(obj) {
var count = 0;
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
++count;
}
return count;
}
En el caso de implementaciones compatibles con ECMAScript 5, esto también se puede escribir como (Felicitaciones a Avi Flax )
function countProperties(obj) {
return Object.keys(obj).length;
}
Tenga en cuenta que también perderá propiedades que no se puedan enumerar (por ejemplo, una matriz length
).
Si está utilizando un marco como jQuery, Prototype, Mootools, $ cualquiera que sea el bombo más nuevo, verifique si vienen con su propia API de colecciones, que podría ser una mejor solución a su problema que usar objetos JS nativos.