如何测试一个空的JavaScript对象?

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

var a = {};

我怎样才能检查是否是这种情况?

要做到这一点,没有简单的方法。你必须明确地循环处理这些属性。

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

    return true;
}

如果ECMAScript 5 support可用,你可以用Object.keys()代替。

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

1.只是一个变通办法。你的服务器能否在没有数据的情况下生成一些特殊的属性?

比如说。

    var a = {empty:true};

然后你就可以在你的AJAX回调代码中轻松地检查它。

2.另一种检查方式。

    如果(a.toSource() ==="({})")  //则'a'为空

编辑:。 如果你使用任何JSON库(如JSON.js),那么你可以尝试JSON.encode()函数,并测试空值字符串的结果。

评论(11)
function isEmpty(obj) {
  for(var i in obj) { return false; }
  return true;
}
评论(1)