空のJavaScriptオブジェクトをテストするには?

AJAXリクエストの後、アプリケーションが以下のように空のオブジェクトを返すことがあります。

var a = {};

どうすればそのような状況を確認できますか?

これを簡単に行う方法はありません。プロパティを明示的にループさせる必要があります。

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

    return true;
}

ECMAScript 5 サポート](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys#Browser_compatibility)があれば、代わりに Object.keys() を使うことができます。

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

1.単なる回避策です。データがない場合に、何か特別なプロパティを生成することはできますか?

例えばですが

    var a = {empty:true};

そうすれば、AJAXコールバックのコードで簡単に確認することができます。

2.チェックする別の方法

    if (a.toSource() === "({})")  // その場合、'a'は空です

EDIT: JSONライブラリ(例:JSON.js)を使用している場合は、JSON.encode()関数を試して、空の値の文字列に対する結果をテストすることができます。

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