Если вам не нужна поддержка Internet Explorer 8 или ниже, вы можете легко получить количество свойств в объекте, выполнив следующие два шага:
- Запустите либо
Object.keys()
, чтобы получить массив, содержащий имена только тех свойств, которые перечислимы или Object.getOwnPropertyNames()
, если вы также хотите включить имена свойств, которые не перечисляются.
- Получите свойство
.length
этого массива.
Если вам нужно сделать это более одного раза, вы можете заключить эту логику в функцию:
function size(obj, enumerablesOnly) {
return enumerablesOnly === false ?
Object.getOwnPropertyNames(obj).length :
Object.keys(obj).length;
}
Как использовать эту функцию:
var myObj = Object.create({}, {
getFoo: {},
setFoo: {}
});
myObj.Foo = 12;
var myArr = [1,2,5,4,8,15];
console.log(size(myObj)); // Output : 1
console.log(size(myObj, true)); // Output : 1
console.log(size(myObj, false)); // Output : 3
console.log(size(myArr)); // Output : 6
console.log(size(myArr, true)); // Output : 6
console.log(size(myArr, false)); // Output : 7
См. Также эту скрипку для демонстрации.