测试空 JavaScript 对象
处理 AJAX 响应时,经常会遇到空对象,例如 var a = {};。确定对象是否为空对于各种应用程序任务至关重要。
Object.hasOwn() 和 for...in 循环:
对于 ECMAScript 2022 环境, Object.hasOwn() 方法可以与 for...in 循环结合使用来检查是否为空对象:
function isEmpty(obj) { for (const prop in obj) { if (Object.hasOwn(obj, prop)) { return false; } } return true; }
该方法会遍历对象自身的所有属性,如果找到任何属性,则表明该对象非空对象。
区分空对象和对象没有自己的属性:
如果您需要区分类似 {} 的空对象和没有自己的属性(例如日期)的对象,可以执行额外的类型检查:
function isEmptyObject(value) { if (value == null) { return false; // null or undefined } if (typeof value !== 'object') { return false; // boolean, number, string, etc. } const proto = Object.getPrototypeOf(value); if (proto !== null && proto !== Object.prototype) { return false; // consider 'Object.create(null)' } return isEmpty(value); }
替代方法:
如果您无权访问ES 2022 功能,您可以使用旧版 Object.prototype.hasOwnProperty.call()方法:
function isEmpty(obj) { for (var prop in obj) { if (Object.prototype.hasOwnProperty.call(obj, prop)) { return false; } } return true; }
流行的库函数:
许多流行的库还提供了检查空对象的函数:
以上是如何有效测试空 JavaScript 对象?的详细内容。更多信息请关注PHP中文网其他相关文章!