Проблема

Если вы похожи на меня, то одним раздражителем использования javascript является обнаружение отсутствующих ветвей при обходе дерева объекта, эти отсутствующие потомки не возвращают undefined, а вместо этого javascript выдает ошибку, потенциально ломая мое приложение.

Чтобы убедиться, что наши функции корректно завершают работу, мы часто вставляем беспорядочные охранники, которые могут выглядеть примерно так.

На самом деле, это настолько распространенная проблема, что решение находится в процессе становления частью языка (подробнее об этом ниже). Однако если вы ищете решение сегодня, продолжайте читать.

Решение сегодня

Приведенный ниже код позволяет нам безопасно получать реквизиты внутренних объектов, не вызывая ошибки. В случае ошибки или если потомок не существует, он вернет undefined.

При использовании prototype для расширения Object помните, что не следует использовать стрелочную функцию, так как она будет связываться this с передачей самой функции вместо предполагаемого объекта.

Решение завтрашнего дня

Существует новое предложение, которое официально решит эту проблему с javascript, и в настоящее время оно находится на стадии 3. Это означает, что оно в основном закончено, это кандидат, и его просто нужно подписать. Так что вполне вероятно, что он будет введен в язык javascript… но это не точно.

Использование выглядит так.

Если ваше приложение использует Babel, вы можете использовать его сейчас.

Попробуйте этот плагин для Babel

Один небольшой момент заключается в том, что полифилл плагина babel создает больше кода, взгляните на вывод здесь.

________________

Надеюсь, теперь ваше приложение никогда не сломается из-за подозрительного объекта!