前提要点
- JavaScript中只支持字符串、Symbol符号两种类型作为对象的属性
下手方向
- 常规字符串属性的对象判空
- Symbol符号属性的对象判空
- 全属性对象判空
正解开始
方向一
1、JSON.stringify(obj) === '{}'通过将对象转化为JSON字符串,但是判断不出Symbol,如下图
2、for in 可枚举对象的非符号键属性,如果是空对象那么下图isObj返回false
3. 通过Object.keys(obj).length判断对象键值数组长度是否等于0
同样判断不出符合键的对象
4. 通过Object.getOwnPropertyNames(obj).length获取对象所有非符号键属性的数组长度是否为0
方向二
1. 通过Object.getOwnPropertySymbols(obj).length获取对象所有Symbol符号属性的键数组长度是否为0
完整答案
***方向一任选一种和方向二搭配均可
终极大法
5、使用Reflect.ownKeys(obj).length===0获取对象所有键属性的数组长度判断是否为0(符号和非符号键均包含)