Быстрый способ подсчета количества свойств объекта в JavaScript

Подсчет свойств объекта в JS

Ищу оптимальный метод для определения количества свойств в объекте JavaScript. Существует ли способ сделать это без перебора всех элементов?

Сейчас использую такой подход:

var total = 0;
for (key in dataObject) {
    if (dataObject.hasOwnProperty(key)) {
        total++;
    }
}

Помню, что в старых версиях Firefox было свойство __count__, но его убрали. Какие есть альтернативы для быстрого подсчета? Может есть встроенные методы или более эффективные решения?

Object.keys работает для большинства задач. Если нужна скорость - попробуй Reflect.ownKeys(dataObject).length, он захватывает даже не-enumerable свойства. Кстати, зачем тебе именно скорость? Какого размера объекты обрабатываешь?

Object.keys(dataObject).length - это самый простой способ. Возвращает массив всех свойств объекта, берёшь его длину и всё. Работает везде и читается намного лучше твоего цикла. Если нужны только enumerable свойства - то это то что надо.

Я обычно использую Object.getOwnPropertyNames(obj).length для объектов с не-enumerable свойствами. Он показывает все собственные свойства, не важно перечисляемые или нет. По скорости как Object.keys, но картина полнее. Хотя для простых объектов Object.keys хватает.