Kuidas testida tühja JavaScripti objekti?

Pärast AJAX päringut võib minu rakendus mõnikord tagastada tühja objekti, näiteks:

var a = {};

Kuidas ma saan kontrollida, kas see on nii?

Seda ei ole lihtne teha. Te peate omadusi selgesõnaliselt läbi käima:

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

    return true;
}

Kui ECMAScript 5 tugi on saadaval, võite selle asemel kasutada Object.keys():

function isEmpty(obj) {
    return Object.keys(obj).length === 0;
}
Kommentaarid (16)
  1. Lihtsalt abinõu. Kas teie server saab andmete puudumise korral genereerida mingi erilise omaduse?

Näiteks:

    var a = {empty:true};

Seejärel saate seda hõlpsasti kontrollida oma AJAXi tagasikutsumise koodis.

  1. Teine võimalus selle kontrollimiseks:

     Kui (a.toSource() === "({})")  // siis on 'a' tühi

EDIT: Kui kasutate mingit JSON raamatukogu (nt JSON.js), siis võite proovida JSON.encode() funktsiooni ja testida tulemust tühja väärtuse stringi suhtes.

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