前端面试题攻略1-如何判断一个对象是不是空对象

243 阅读1分钟

前提要点

  • JavaScript中只支持字符串、Symbol符号两种类型作为对象的属性

下手方向

  1. 常规字符串属性的对象判空
  2. Symbol符号属性的对象判空
  3. 全属性对象判空

正解开始

方向一
1、JSON.stringify(obj) === '{}'通过将对象转化为JSON字符串,但是判断不出Symbol,如下图 image.png
2、for in 可枚举对象的非符号键属性,如果是空对象那么下图isObj返回false image.png
3. 通过Object.keys(obj).length判断对象键值数组长度是否等于0 image.png 同样判断不出符合键的对象 image.png
4. 通过Object.getOwnPropertyNames(obj).length获取对象所有非符号键属性的数组长度是否为0 image.png

方向二
1. 通过Object.getOwnPropertySymbols(obj).length获取对象所有Symbol符号属性的键数组长度是否为0
image.png

完整答案

***方向一任选一种和方向二搭配均可

终极大法

5、使用Reflect.ownKeys(obj).length===0获取对象所有键属性的数组长度判断是否为0(符号和非符号键均包含)

image.png

image.png