Moin,
ich stolpere immer wieder über eine Kleinigkeit die ich bisher noch nicht zu meiner Zufriedenheit lösen konnte.
Wie über prüft man ohne Fehler ob ein Wert in einem mehrdimensionalem Objekt vorhanden ist oder nicht, wenn ein übergeordnete Eigenschaft existiert oder nicht. Zur Verdeutlichung:
var foo = {}; // es gibt stehts ein Objekt foo
foo.bar = {}; // existiert nicht permanent
foo.bar.baz = {}; // existiert ebenfalls nicht permanent
// falls foo.bar.baz existiert, existiert auch foo.bar.baz.foz
foo.bar.baz.foz = 123;
// wie frage ich ohne Fehler und möglichst einfach ob foo.bar.baz existiert?
if( typeof(foo.bar.baz) !== 'undefined' ) {
// Falls foo.bar nicht existiert kommt logischerweise folgender Fehler :
// Uncaught TypeError: Cannot read property 'baz' of undefined
}
if( typeof(foo.bar) !== 'undefined' ) {
if( typeof(foo.bar.baz) !== 'undefined' ) {
// Gibt zwar keinen Fehler aus aber das Konstrukt wird schnell unübersichtlich
}
}
// Natürlich auch Inline möglich aber unschön
var x = (typeof(foo.bar) !== 'undefined') ? (typeof(foo.bar.baz) !== 'undefined') ? foo.bar.baz.foz : y : y;
Gibt es da eine schicke Lösung die ich bisher noch nicht gefunden habe?
Gruß
Jo