无法访问名称中包含空格的属性

时间:2016-05-30 09:40:46

标签: javascript

我有以下对象:

 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 turnoverDashboardnl属性的object['object property']属性,根据问题和答案here可以访问比如:Cube.Attach(100,0,5); :Tree.Attach(10,0,50); :Plane.Attach(0,0,0); :Terrain.Attach(0,0,0); 但是当我尝试访问它时,出于某种原因它是未定义的:

enter image description here

为什么这不起作用?

6 个答案:

答案 0 :(得分:4)

Dashboard是一个数组,您的对象是此数组中的第一个元素。如果您使用'字符串,也不必转义""

所以使用这个:

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

答案 1 :(得分: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>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

  

为什么这不起作用?

因为您没有使用该属性的确切名称,但由于某种原因决定添加额外的反斜杠...

答案 3 :(得分:1)

DashboardArray,而不是Object。要访问它,您必须:

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

或者:

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

答案 4 :(得分: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

答案 5 :(得分:0)

这里有一些理论支持其他好的答案。

也可以使用括号表示法访问或设置JavaScript对象的属性(有关详细信息,请参阅property accessors)。对象有时称为关联数组,因为每个属性都与可用于访问它的字符串值相关联。因此,例如,您可以按如下方式访问myCar对象的属性:

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

有关详情,请参阅Working with JS Objects