如何判断一个对象为空对象

5/15/2021 JavaScript

# 方法

# 1.JSON.stringify

const obj = {}

JSON.stringify(obj) === '{}' // true
1
2
3

# 2.for in

function isEmptyObj(obj) {
  for(let key in obj) {
    return false
  }
  return true
}

isEmptyObj(obj) // true
1
2
3
4
5
6
7
8

弊端

由于 for in 会遍历对象的原型链,如果原型链上某个原型对象中有属性或方法时,都会被遍历出来,解决方法可以看下一种方法,一般我们不会使用 for in 来判断一个对象是否是空对象

# 3.for in 和 hasOwnProperty

function isEmptyObj(obj) {
  for(let key in obj) {
    if (obj.hasOwnProperty(key)) {
      return false
    }
  }
  return true
}

isEmptyObj(obj) // true
1
2
3
4
5
6
7
8
9
10

# 4.Object.getOwnPropertyNames

Object.getOwnPropertyNames(obj).length === 0 // true
1

弊端

getOwnPropertyNames 无法遍历对象中 Symbol 定义的属性,相关知识可查看 这篇文章

# 5.Object.values

Object.values(obj).length === 0 // true
1

# 6.Object.keys

Object.keys(obj).length === 0 // true
1

# 7.Object.entries

Object.entries(obj).length === 0 // true
1

# 总结

推荐使用 Object.valuesObject.keysObject.entries ,他们都是以数组的方式返回,区别是:values 方法返回对象的 属性值keys 方法返回对象的 属性名entries 方法返回对象的 属性名属性值

注意:返回的属性是对象 自有的可枚举的 属性

Last Updated: 5/31/2023, 6:25:55 PM