var foo = function(o) {...
Параметр o может быть нулевым или содержать или не содержать определенные вложенные объекты.Доступ к возможно вложенным свойствам в javascript?
Я хочу найти значение o.foo.bar.baz.chomp.mumble. Если какой-либо из mumble или его содержащих объектов имеет значение null, я хочу получить null.
Я могу это сделать (в данном случае, я могу предположить, что все элементы пути являются либо объектами, либо не существует - ни один из них не пустой, не являющиеся объектами):
var mumble = o && o.foo && o.foo.bar && o.foo.bar.baz
&& o.foo.bar.baz.chomp ? o.foo.bar.baz.chomp.mumble : null;
Или я могу сделать это:
var mumble = null;
try {
mumble = o.foo.bar.baz.chomp.mumble;
}
catch { //ignore null pointer exception}
или я могу это сделать:
var nestedVal = function(o, a) {
if(isString(a)) {
a = a.split('.');
}
var i = 0, j = a.length;
for(; o && isObject(o) && i < j; ++i) {
o = o[ a[ i ] ];
}
return i == j ? o : null;
};
var mumble = nestedValue(o, "foo.bar.baz.chomp.mumble");
Что предпочтительнее, или есть четвертый, лучше, способ сделать Тхи s?
http://stackoverflow.com/questions/2631001/javascript-test-for-existence-of-nested-object-key?rq=1 –