J o: Überprüfen ob Wert in mehrdimensionalem Objekt existiert

Beitrag lesen

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