--- id: 56533eb9ac21ba0edf2244c8 title: Accessing Object Properties with Bracket Notation challengeType: 1 videoUrl: 'https://scrimba.com/c/cBvmEHP' forumTopicId: 16163 localeTitle: 通过方括号访问对象属性 --- ## Description
第二种访问对象的方式就是中括号操作符([]),如果你想访问的属性的名称有一个空格,这时你只能使用中括号操作符([])。 当然,如果属性名不包含空格,也可以使用中括号操作符。 这是一个使用中括号操作符([])读取对象属性的例子: ```js var myObj = { "Space Name": "Kirk", "More Space": "Spock", "NoSpace": "USS Enterprise" }; myObj["Space Name"]; // Kirk myObj['More Space']; // Spock myObj["NoSpace"]; // USS Enterprise ``` 提示:属性名称中如果有空格,必须把属性名称用单引号或双引号包裹起来。
## Instructions
用中括号操作符读取对象testObjan entree属性值和the drink属性值,并分别赋值给entreeValuedrinkValue
## Tests
```yml tests: - text: entreeValue应该是一个字符串。 testString: assert(typeof entreeValue === 'string' ); - text: entreeValue的值应该是"hamburger"。 testString: assert(entreeValue === 'hamburger' ); - text: drinkValue应该是一个字符串。 testString: assert(typeof drinkValue === 'string' ); - text: drinkValue的值应该是"water"。 testString: assert(drinkValue === 'water' ); - text: 你应该使用中括号两次。 testString: assert(code.match(/testObj\s*?\[('|")[^'"]+\1\]/g).length > 1); ```
## Challenge Seed
```js // Setup var testObj = { "an entree": "hamburger", "my side": "veggies", "the drink": "water" }; // Only change code below this line var entreeValue = testObj; // Change this line var drinkValue = testObj; // Change this line ```
### After Test
```js (function(a,b) { return "entreeValue = '" + a + "', drinkValue = '" + b + "'"; })(entreeValue,drinkValue); ```
## Solution
```js var testObj = { "an entree": "hamburger", "my side": "veggies", "the drink": "water" }; var entreeValue = testObj["an entree"]; var drinkValue = testObj['the drink']; ```