2016-09-27 62 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',這也會失敗。作爲一個通用的解決方案:'如果(o!= null && o.hasOwnProperty('checkedProperty')){'這個假定'o'已經被聲明。否則:'if(typeof o!=='undefined'&& o!== null && o.hasOwnProperty('checkedProperty')){' –