1.JSON.stringify()
JSON.stringify({}) === "{}"
缺点:如果存在 undefined/任意函数/symbol值 会被忽略或转成null
2. for in 配合 hasOwnProperty
缺点: 不能遍历不可枚举属性
3. Object.keys(obj).length === 0
缺点: 不能遍历不可枚举属性
4. Object.getOwnPropertyNames(obj)
缺点:不能获取Symbol值, 可以结合Object.getOwnPropertyNames()使用
5.Reflect.ownKeys(obj) 最完美
const key =Symbol()
const obj= {[key]:1
}
console.log(obj) // {Symbol(): 1}
console.log(Object.getOwnPropertyNames(obj)) //[]
console.log(Object.getOwnPropertySymbols(obj)) // [Symbol()]console.log(Reflect.ownKeys(obj)) // [Symbol()]