- 一
function isEmpty1(obj) {
return JSON.stringify(obj) === "{}";
}
- 二
function isEmpty2(obj) {
return Object.getOwnPropertyNames(obj).length === 0;
}
- 三
function isEmpty3(obj) {
return Object.keys(obj).length === 0;
}
- 四
function isEmpty4(obj) {
for (let key in obj) {
if (key) return false;
}
return true;
}
- 五
function isEmpty5(obj) {
return Reflect.ownKeys(obj).length === 0;
}
const obj = { name: 1 };
console.log("1 isEmpty:", isEmpty1(obj)); //false
console.log("2 isEmpty:", isEmpty2(obj)); //false
console.log("3 isEmpty:", isEmpty3(obj)); //false
console.log("4 isEmpty:", isEmpty4(obj)); //false
console.log("5 isEmpty:", isEmpty5(obj)); //false
const obj2 = {};
console.log("1 isEmpty:", isEmpty1(obj2)); //true
console.log("2 isEmpty:", isEmpty2(obj2)); //true
console.log("3 isEmpty:", isEmpty3(obj2)); //true
console.log("4 isEmpty:", isEmpty4(obj2)); //true
console.log("5 isEmpty:", isEmpty5(obj2)); //true
const symbolKey = Symbol("name");
const obj3 = { [symbolKey]: 1 };
console.log("1 isEmpty:", isEmpty1(obj3)); //true
console.log("2 isEmpty:", isEmpty2(obj3)); //true
console.log("3 isEmpty:", isEmpty3(obj3)); //true
console.log("4 isEmpty:", isEmpty4(obj3)); //true
console.log("5 isEmpty:", isEmpty5(obj3)); //false
总结
最好用的还是Reflect.ownKeys(),比较全面,能检测Symbol类型的key