网上已经有不少的回答了分别是jquery
for in (jquery中就是这么实现的) for of JSON.stringify() == '{}' Object.getOwnPropertyNames() Object.keys() Object.values() Underscore.js中的isEmpty
这些办法在判断常规的对象的时候没有问题,,当一个对象为空的时候获得的答案也是预期的面试
可是
当对象中有symbol做为键值的时候呢???api
测试:
测试
结果:spa
就会被误觉得是空的
虽然还有一个方法Object.getOwnPropertySymbols能够拿到,可是在正常的对象中他又为空了code
虽然把他们组合起来就能够解决问题,可是有一个新的api叫Reflect.ownKeys(),能够更方便的解决对象
固然咋真正用的时候不多会那symbol去作一个对象的键值,可是在面试的时候,,这个问题能够说是高频问题了blog
以上。ip