如何测试空的JavaScript对象?

在AJAX请求之后,有时我的应用程序可能会返回一个空对象,如:

var a = {};

我如何检查是否是这种情况?


ECMA 5+:

// because Object.keys(new Date()).length === 0;
// we have to do some additional check
Object.keys(obj).length === 0 && obj.constructor === Object

ECMA前5:

function isEmpty(obj) {
    for(var prop in obj) {
        if(obj.hasOwnProperty(prop))
            return false;
    }

    return JSON.stringify(obj) === JSON.stringify({});
}

jQuery的:

jQuery.isEmptyObject({}); // true

lodash:

_.isEmpty({}); // true

强调:

_.isEmpty({}); // true

霍克

Hoek.deepEqual({}, {}); // true

ExtJS的

Ext.Object.isEmpty({}); // true

AngularJS(版本1)

angular.equals({}, {}); // true

Ramda

R.isEmpty({}); // true

有没有简单的方法来做到这一点。 你必须显式地遍历这些属性:

function isEmpty(obj) {
    for(var prop in obj) {
        if(obj.hasOwnProperty(prop))
            return false;
    }

    return true;
}

如果ECMAScript 5支持可用,则可以使用Object.keys()代替:

function isEmpty(obj) {
    return Object.keys(obj).length === 0;
}

对于那些有相同问题但使用jQuery的人,可以使用jQuery.isEmptyObject。

链接地址: http://www.djcxy.com/p/5429.html

上一篇: How do I test for an empty JavaScript object?

下一篇: Check if a value is an object in JavaScript