JavaScript中如何判断⼀个对象是空对象
1. 利⽤ in 判断
function isEmptyObject(object) {
for (let key in object) {
return false; // 能遍历,对象不为空
}
return true;
}
思路:利⽤for in 循环遍历对象和对象原型上的可枚举属性;
缺点:只能遍历可枚举属性,若⼀个对象上只有不可枚举属性的话,会判断错误;
2. 利⽤ Object.keys() 判断
function isEmptyObject(object) {
return Object.keys(object).length === 0;
}
思路:Object.keys 能返回对象⾃⾝上所有可枚举属性的名称所构成的数组,若数组长度为0,那就是⼀个空对象;
缺点:如 in 判断⼀样,Object.keys ⽅法也只返回可枚举属性;
3. 将对象转化为json字符串
function isEmptyObject(object) {
字符串长度判断return JSON.stringify(object) === "{}";
}
4. 利⽤ OwnPropertyNames() 判断
function isEmptyObject(object) {
OwnPropertyNames(object).length === 0;
}
思路: OwnPropertyNames ⽅法获取到对象中的属性名,存到⼀个数组中,返回数组对象,若数组长度为0,则是空对象;缺点: OwnPropertyNames ⽅法是 Object.keys 的改进,可获取到不可枚举属性,但该⽅法⽆法获取 Symbol 属性;
5. 利⽤ Reflect.ownKeys() 判断
function isEmptyObject(object) {
return Reflect.ownKeys(object).length === 0;
}
思路: Reflect.ownKeys 也可以返回对象⾃⾝属性名所构成的数组,该⽅法可以返回不可枚举属性以及 Symbol 属性;
[延伸知识点]
什么是可枚举属性,什么是不可枚举属性:
可枚举属性是指内部可枚举标志 (enumerable) 设置为 true 的属性,不可枚举属性即是 enumerable 为 false;
js遍历对象⽅法区别总结:
⽅法基本属性原型链属性不可枚举属性symbol属性
Object.keys()√×××
OwnPropertySymbols()()××√√
Reflect.ownKeys()√×√√
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论