在AJAX请求之后,有时我的应用程序可能会返回一个空对象,例如:
var a = {};
我该如何检查是否是这种情况?
在AJAX请求之后,有时我的应用程序可能会返回一个空对象,例如:
var a = {};
我该如何检查是否是这种情况?
当前回答
警告当心JSON的限制。
javascript:
obj={ f:function(){} };
alert( "Beware!! obj is NOT empty!\n\nobj = { f:function(){} }" +
"\n\nJSON.stringify( obj )\n\nreturns\n\n" +
JSON.stringify( obj ) );
显示器
Beware!! obj is NOT empty! obj = { f:function(){} } JSON.stringify( obj ) returns {}
其他回答
老问题,但只是有问题。如果您的唯一目的是检查对象是否为空,那么包含JQuery并不是一个好主意。相反,只需深入JQuery的代码,就会得到答案:
function isEmptyObject(obj) {
var name;
for (name in obj) {
if (obj.hasOwnProperty(name)) {
return false;
}
}
return true;
}
这与在lodash源中检查对象的方式类似:
const isEmpty = value => {
for (const key in value) {
if (hasOwnProperty.call(value, key)) {
return false
}
}
return true;
}
但有很多其他方法可以做到这一点。
警告当心JSON的限制。
javascript:
obj={ f:function(){} };
alert( "Beware!! obj is NOT empty!\n\nobj = { f:function(){} }" +
"\n\nJSON.stringify( obj )\n\nreturns\n\n" +
JSON.stringify( obj ) );
显示器
Beware!! obj is NOT empty! obj = { f:function(){} } JSON.stringify( obj ) returns {}
从jQuery 1.4开始,isEmptyObject()方法检查对象本身的财产和从原型继承的财产(因为它不使用hasOwnProperty)。参数应该始终是一个普通的JavaScript对象,因为其他类型的对象(DOM元素、原始字符串/数字、宿主对象)可能不会在浏览器中提供一致的结果。要确定对象是否为纯JavaScript对象,请使用$.isPlainObject()。
jQuery.isPlainObject({}) // true
jQuery.isPlainObject( "test" ) // false
Jquery api
对于有相同问题但使用jQuery的人,可以使用jQuery.isEmptyObject。