JS中如何判断一个对象是否为空对象
方法一 Object.keys()
通过ES6新增的一个Object.keys()方法
该方法会返回一个由给定对象自身的(不含继承的)可枚举(enumerable )属性组成的数组,数组中属性名的排列顺序和使用 for...in.. 循环遍历该对象时返回的顺序一致 。即可以通过返回数组的长度来判断是否为空对象,若为空对象,该数组长度为0。
- 不包括继承的
- 不包括不可枚举的
- 不包括 Symbol 值作为名称的属性
例:
const judgeObj = (obj) => {
if (Object.keys(obj).length == 0) {
return true;
} else {
return false;
}
}
方法二 JSON.stringify
JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串。
通过JSON.stringify转换后 和 '{}'比对
const judgeObj = (obj) => {
return JSON.stringify(obj) === '{}'
}
方法三 for...in
for...in 语句以任意顺序迭代一个对象的除Symbol以外的可枚举属性,包括继承的可枚举属性。
- 包括继承的
- 不包括不可枚举的
- 不包括Symbol
例:
const judgeObj = (obj) => {
for (let key in obj) {
return false
}
return true
}
当对象中key值不存在的话,得到的key为undefined,则return true,那么就是空对象。
附:
Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组
,数组中属性名的排列顺序和使用 for…in 循环遍历该对象时返回的顺序一致 (两者的主要区别是 for-in 循环还会枚举其原型链上的属性)。
var obj={
p1:123,
p2:456
}
console.log(Object.keys(obj)); //["p1","p2"]