Работа цикла for in?
Он возвращает true при пустом объекте потому что ему нечего перебирать и он даже не доходил до return false
А если возвращает false, значит существует хотя бы одно свойство
это весь код?
в хроме должно работать так как должно
а вообще можно просто смотреть Object.keys(obj).length