2016-09-27 2 views
-6

У меня есть объект, как этот var o = $scope['reservation']['bookings'][bookingKey]['meals']Как проверить свойство без hasOwnProperty

Когда я

if (o.hasOwnProperty('checkedProperty') { 

    // code 

} 

У меня есть ошибка Uncaught TypeError: Cannot read property 'hasOwnProperty' of undefined.

Я тоже попробовать:

if (o['checkedProperty']) { 

    // code to do if my object 'o' has 'checkedProperty' 

} 

, но у меня есть ошибка: Uncaught TypeError: Cannot read property '26' of undefined.

Как это сделать, чтобы проверить это свойство?

+1

'' O' является undefined' –

+0

проверки, если объект является 'undefined' первым, а затем продолжить. – vlaz

+0

'try/catch', если вы не хотите много работать. или 'if (o! = null && o.reservations! = null && o.reservations.bookings! = null ...)' – yoavmatchulsky

ответ

1

Вы не можете проверить, существует ли свойство на объекте, когда у вас нет объекта в первую очередь.

Проверьте o на самом деле является объектом:

if (typeof o !== "undefined" && o.hasOwnProperty('checkedProperty')) { 
+0

Это также выйдет из строя, если 'o' является' null'. В качестве общего решения: 'if (o! = Null && o.hasOwnProperty ('checkedProperty')) {' Это предполагает, что 'o' был объявлен. В противном случае: 'if (typeof o! == 'undefined' && o! == null && o.hasOwnProperty ('checkedProperty')) {' –

Смежные вопросы