Ответ на @Vishwas G (не комментарий, потому что блоки кода не поддерживаются в комментариях):
Как указал Даниэль, если объект «a» в вашем примере вообще не существует, ваша попытка доступа к «b» на «a» вызовет ошибку. Это происходит в тех случаях, когда вы ожидаете глубокую структуру, такую как объект JSON, который может, например, иметь формат «content.social.avatar». Если «социальный» не существует, то попытка доступа к «content.social.avatar» вызовет ошибку.
Вот общий пример теста на существование свойств с глубокой структурой, где «неопределенный» подход может вызвать ошибку в случаях, когда подход «hasOwnProperty()» этого не делает:
// Missing property "c". This is the "invalid data" case.
var test1:Object = { a:{b:"hello"}};
// Has property "c". This is the "valid data" case.
var test2:Object = { a:{b:{c:"world"}}};
Теперь тесты...
// ** Error ** (Because "b" is a String, not a dynamic
// object, so ActionScript's type checker generates an error.)
trace(test1.a.b.c);
// Outputs: world
trace(test2.a.b.c);
// ** Error **. (Because although "b" exists, there's no "c" in "b".)
trace(test1.a && test1.a.b && test1.a.b.c);
// Outputs: world
trace(test2.a && test2.a.b && test2.a.b.c);
// Outputs: false. (Notice, no error here. Compare with the previous
// misguided existence-test attempt, which generated an error.)
trace(test1.hasOwnProperty("a") && test1.a.hasOwnProperty("b") && test1.a.b.hasOwnProperty("c"));
// Outputs: true
trace(test2.hasOwnProperty("a") && test2.a.hasOwnProperty("b") && test2.a.b.hasOwnProperty("c"));
Обратите внимание, что родственный ActionScript язык JavaScript не выдаст ошибку в примере test1. Однако, если вы расширите иерархию объектов еще на один уровень, вы столкнетесь с ошибками и в JavaScript:
// ** Error (even in JavaScript) ** because "c" doesn't even exist, so
// test1.a.b.c.d becomes an attempt to access a property on undefined,
// which always yields an error.
alert(test1.a.b.c.d)
// JavaScript: Uncaught TypeError: Cannot read property 'd' of undefined
person
colin moock
schedule
06.12.2015