2016-05-30 2 views
0

У меня есть следующий объект:не удается получить доступ к собственности с пространством имени

translations = { 
     'nl': { 
      'Dashboard': [ 
      { 
       "Today's turnover": "Omzet van vandaag", 
       "Get an overview directly from your receipts on location.": "Bekijk een overzicht rechtstreeks vanuit uw inkomsten op locatie.", 
       "Choose your POS provider": "Kies uw POS provider" 
      }], 
      'Products': [], 
      'Order': [] 
     } 

    } 

И я пытаюсь получить доступ к Today's turnover свойства Dashboard proprty внутри nl, который, в соответствии с вопросом и ответами here может доступ как object['object property'] Однако, когда я пытаюсь получить доступ к нему, он приходит как неопределенные по какой-то причине:

enter image description here

Почему это п от работы?

ответ

4

Приборная панель представляет собой массив, а ваш объект является первым элементом в этом массиве. Также вам не нужно бежать ', если вы в строке ""!

Так используйте:

translations['nl']['Dashboard'][0]["Today's turnover"] 
1

Почему это не работает?

Поскольку вы не используете точное название имущества, но по какой-то причине решили добавить дополнительный обратный слэш ...

+0

Это значит избежать '' '.. –

0

Dashboard является массивом. Так что используйте Dashboard[0]

translations = { 
     'nl': { 
      'Dashboard': [ 
      { 
       "Today's turnover": "Omzet van vandaag", 
       "Get an overview directly from your receipts on location.": "Bekijk een overzicht rechtstreeks vanuit uw inkomsten op locatie.", 
       "Choose your POS provider": "Kies uw POS provider" 
      }], 
      'Products': [], 
      'Order': [] 
     } 

    } 

console.log(translations.nl.Dashboard[0]['Today\'s turnover']); 

Примечание

[ ] является использовать для получения Today's turnover ключа вместо dot(.) обозначения. Вы можете проверить это Link для получения дополнительной информации

jsfiddle

1

Dashboard является Array, не Object. Для того, чтобы получить доступ к нему, вы должны:

translations['n1']['Dashboard'][0]['Today\'s turnover'] 

Или:

translations.n1.Dashboard[0]['Today\'s turnover'] 
2

Проверить ниже код его работы для object['object property'], может быть, вы используете какой-то неправильный ключ имя

translations = { 
 
    'nl': { 
 
    'Dashboard': [{ 
 
     "Today's turnover": "Omzet van vandaag", 
 
     "Get an overview directly from your receipts on location.": "Bekijk een overzicht rechtstreeks vanuit uw inkomsten op locatie.", 
 
     "Choose your POS provider": "Kies uw POS provider" 
 
    }], 
 
    'Products': [], 
 
    'Order': [] 
 
    } 
 

 
} 
 

 
document.getElementsByTagName("div")[0].innerHTML = translations['nl']['Dashboard'][0]['Today\'s turnover'];
<div></div>

0

Немного теории назад другие хорошие ответы здесь.

Свойства объектов JavaScript также могут быть доступны или заданы с использованием скобок нотации (подробнее см. property accessors). Объекты иногда называются ассоциативными массивами, поскольку каждое свойство связано со строковым значением, которое можно использовать для доступа к нему. Так, например, вы можете получить доступ к свойствам объекта MyCar следующим образом:

myCar['make'] = 'Ford'; 
myCar['model'] = 'Mustang'; 
myCar['year'] = 1969; 

Более подробную информацию, читайте дальше в Working with JS Objects.

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