在js中如何判断一个对象是否为空

网上已经有不少的回答了分别是jquery

for in (jquery中就是这么实现的)
for of
JSON.stringify() == '{}'
Object.getOwnPropertyNames()
Object.keys()
Object.values()
Underscore.js中的isEmpty

这些办法在判断常规的对象的时候没有问题,,当一个对象为空的时候获得的答案也是预期的面试

可是
当对象中有symbol做为键值的时候呢???api

测试:
clipboard.png测试

结果:spa

clipboard.png
clipboard.png

就会被误觉得是空的
虽然还有一个方法Object.getOwnPropertySymbols能够拿到,可是在正常的对象中他又为空了code

虽然把他们组合起来就能够解决问题,可是有一个新的api叫Reflect.ownKeys(),能够更方便的解决对象

固然咋真正用的时候不多会那symbol去作一个对象的键值,可是在面试的时候,,这个问题能够说是高频问题了blog

以上。ip