访问密钥空间的javascript对象

jul*_*lio 101 javascript object

我有一个javascript对象,看起来像这样:

var myTextOptions = {
  'cartoon': {
     comic: 'Calvin & Hobbes',
     published: '1993'
  },
  'character names': {
    kid: 'Calvin',
    tiger: 'Hobbes'
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以轻松使用cartoon或其他任何方式访问卡通属性.但是,我无法获得正确的访问语法myTextOptions.cartoon.comic.我试过以下没有运气:

myTextOptions.character names.kid
myTextOptions."character names".kid
myTextOptions.character\ names.kid
myTextOptions.'character names'.kid
myTextOptions.["character names"].kid
myTextOptions.character%20names.kid
Run Code Online (Sandbox Code Playgroud)

jAn*_*ndy 207

使用ECMA脚本"括号表示法":

myTextOptions[ 'character names' ].kid;
Run Code Online (Sandbox Code Playgroud)

您可以使用该表示法,读取和写入.

欲了解更多信息,请阅读:

  • @James_F因为他也同时使用了'dot notation`.必须只有一个访问者指令. (6认同)
  • julio在OP中提到他已经尝试过使用`myTextOptions.["character names"].kid` - 为了完整性这个问题,我想知道为什么那不起作用? (2认同)
  • 哦,是的,对不起 - 看起来太难了,我没有看到括号前的额外点!- 谢谢 (2认同)
  • @JuanP.Ortiz,如果您使用打字稿,这不是一个好的做法,您将失去打字稿编译检查。 (2认同)

Ahm*_*ais 7

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

myCar['make'] = 'Ford';
myCar['model'] = 'Mustang';
myCar['year'] = 1969;
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请阅读使用 JS 对象

所以在你的情况下是myTextOptions['character names'].kid;


小智 6

我们还可以通过以下方式做到这一点:

myTextOptions[ 'character names' ]['kid'];

当我们有由空格组成的连续键时,这非常有用。