在 AJAX 请求之后,有时我的应用程序可能会返回一个空对象,例如:
var a = {};
我如何检查是否是这种情况?
ECMA 5+:
// because Object.keys(new Date()).length === 0; // we have to do some additional check obj // 👈 null and undefined check && Object.keys(obj).length === 0 && Object.getPrototypeOf(obj) === Object.prototype
但是请注意,这会创建一个不必要的数组( 的返回值keys)。
前 ECMA 5:
function isEmpty(obj) { for(var prop in obj) { if(Object.prototype.hasOwnProperty.call(obj, prop)) { return false; } } return JSON.stringify(obj) === JSON.stringify({}); }
jQuery :
jQuery.isEmptyObject({}); // true
lodash:
_.isEmpty({}); // true
下划线:
Hoek
Hoek.deepEqual({}, {}); // true
ExtJS
Ext.Object.isEmpty({}); // true
AngularJS(版本 1)
angular.equals({}, {}); // true
Ramda
R.isEmpty({}); // true
如果ECMAScript 5 支持可用,您可以使用Object.keys():
function isEmpty(obj) { return Object.keys(obj).length === 0; }
对于 ES3 和更早版本,没有简单的方法可以做到这一点。您必须明确地遍历属性:
function isEmpty(obj) { for(var prop in obj) { if(obj.hasOwnProperty(prop)) return false; } return true; }