1、使用 Object.keys()
方法(常用)
这个方法会返回一个数组,包含对象自身的所有可枚举属性。通过判断这个数组的长度是否为0,就可以确定该对象是否为空。优点是简洁明了,但缺点是它不能检查到原型链上的属性
console.log(Object.keys(this.roomSettingData));
if (this.roomSettingData && Object.keys(this.roomSettingData).length > 0) {
this.nameTitle = this.roomSettingData.sceneName
} else {
this.nameTitle = ""
}
不为空输出
为空时输出
2、for...in...
这种方式可以检查对象自身的以及原型链上的所有属性。只要在遍历过程中没有发现任何属性,就可以认为该对象为空。优点是能够全面地检查对象,但缺点是代码相对复杂,而且可能会影响性能。
const obj = {
name: '张三',
age: 20,
};
let isEmpty = true;
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
isEmpty = false;
break;
}
}
if (isEmpty) {
console.log('对象为空');
} else {
console.log('对象不为空');
}
3、JSON.stringify()
这种方法是将对象转化为 JSON 字符串,然后检查字符串是否为空。如果对象为空,转化后的 JSON 字符串应该是 "{}"。优点是简单易用,但缺点是无法处理含有函数、正则表达式等特殊类型的属性。
console.log(JSON.stringify(this.roomSettingData));
不为空
为空时
const obj = {
name: '张三',
age: 20,
};
if (JSON.stringify(obj) === '{}') {
console.log('对象为空');
} else {
console.log('对象不为空');
}
4、getOwnPropertyNames()
这个方法会获取到对象中的所有属性名,并存储到一个数组中。我们可以通过判断这个数组的长度来判断该对象是否为空。优点是可以获取到对象的所有自有属性,包括不可枚举的属性,但缺点是兼容性不如前几种方法好。
const obj = {
name: '张三',
age: 20,
};
const propertyNames = Object.getOwnPropertyNames(obj);
if (propertyNames.length === 0) {
console.log('对象为空');
} else {
console.log('对象不为空');
};
有什么不对欢迎指出批评,我会改正的,如果对你有所帮助,点点赞哦