Za pomocą inoperatora można sprawdzić, czy właściwość istnieje na obiekcie:
x = {'key': 1};
alert("key" in x);
Możesz również wykonać pętlę przez wszystkie właściwości obiektu za pomocą for - inpętli, a następnie sprawdzić określoną właściwość:
for (prop in x) {
if (prop == "key") {
//Do something
}
}
Należy rozważyć, czy ta właściwość obiektu jest policzalna, czy nie, ponieważ właściwości niepoliczalne nie pojawią się w for-inpętli. Ponadto, jeśli właściwość wyliczalna przesłania właściwość prototypu, której nie można wyliczyć, nie pojawi się w programie Internet Explorer 8 i wcześniejszych wersjach.
Jeśli chcesz wyświetlić listę wszystkich właściwości instancji, niezależnie od tego, czy są one wyliczalne, czy nie, możesz użyć
Object.getOwnPropertyNames(x);
Zwróci tablicę nazw wszystkich właściwości istniejących na obiekcie.
Na koniec możesz użyć operatora typeof, aby bezpośrednio sprawdzić typ danych właściwości obiektu:
if (typeof x.key == "undefined") {
alert("undefined");
}
Jeśli właściwość nie istnieje na obiekcie, zwróci ciąg niezdefiniowany. W przeciwnym razie zwróci odpowiedni typ właściwości. Należy jednak pamiętać, że nie zawsze jest to prawidłowy sposób sprawdzania, czy obiekt ma właściwość, czy nie, ponieważ można mieć właściwość ustawioną na wartość niezdefiniowaną, w którym to przypadku użycie typeof x.keynadal zwróciłoby wartość true (nawet jeśli klucz jest nadal w obiekcie).
Aktualizacja: możesz sprawdzić, czy właściwość istnieje, porównując ją z niezdefiniowaną właściwością javascript
if (x.key === undefined) {
alert("undefined");
}
Powinno to działać, chyba że klucz został specjalnie ustawiony undefinedna obiekcie x