Использование Object.keys (obj) .length (как предложено выше для ECMA 5+) в 10 раз медленнее для пустых объектов! сохранить со старой школой (для ... в) вариант.
Протестировано под Node, Chrom, Firefox и IE 9, становится очевидным, что для большинства случаев использования:
- (для ... in ...) - самый быстрый вариант использования!
- Object.keys (obj). Длина для пустых объектов в 10 раз медленнее
- JSON.stringify (obj). Длина всегда самая медленная (не удивительно)
- Object.getOwnPropertyNames (obj) .length занимает больше времени, чем Object.keys (obj) .length может быть намного длиннее в некоторых системах.
Меньшая производительность, используйте:
function isEmpty(obj) {
for (var x in obj) { return false; }
return true;
}
или
function isEmpty(obj) {
for (var x in obj) { if (obj.hasOwnProperty(x)) return false; }
return true;
}
См. Подробные результаты тестирования и код теста в Является ли объект пустым?