判断对象是否为空的方法中,哪种最常用,适用范围最广
其中,Object.keys(obj),只能返回可枚举的属性组成的数组,是不是存在漏洞,
Object.getOwnPropertyNames可以返回全部,但是我看实际情况中,这个很少使用,为什么
判断对象是否为空的方法中,哪种最常用,适用范围最广
其中,Object.keys(obj),只能返回可枚举的属性组成的数组,是不是存在漏洞,
Object.getOwnPropertyNames可以返回全部,但是我看实际情况中,这个很少使用,为什么
Object.keys(obj)
应该是使用最多的,因为够用了
单独的判断对象是不是空没什么意义,一般都是结合业务需求来看的,业务中的需求就千奇百怪了,是不是要考虑继承属性,是不是只考虑自有属性,是不是要考虑不可枚举属性,对于考虑不可枚举属性来说,那Vue中对数据进行了特殊处理,就没法这么考虑了
你只用知道一些判断的api以及他们的特性就行了
for..in:遍历自身及原型链上的可枚举属性
Object.keys:遍历自身的可枚举属性
Object.getOwnPropertyNames:遍历自身的除Symbol件外的所有属性
Object.getOwnPropertyDescriptors:遍历自身的所有属性
Reflect.ownKeys():遍历自身的所有属性
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
Object.keys 不能用于判断对象是否为空(其实也可以,只是要捕捉异常)
Object.keys 的参数不能是
null
或undefined
,否则会抛错。如果想解决这个错误,最方便的方法是使用空合并如果 obj 是空,会得到一个空数组。
如果想要 obj 是空的时候得到 undefined,那怕是要用三目条件表达式了
这里
obj ?? null
只是为了把undefined
和null
都处理成null
,省得写两个判断。已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。