79 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: 587d7b7c367417b2b2512b18
title: 将键值对添加到对象中
challengeType: 1
forumTopicId: 301153
---
# --description--
对象object本质上是<dfn>键值对key-value pair</dfn>的集合,或者说,一系列被映射到唯一标识符(叫做<dfn>属性property</dfn>或者<dfn>key</dfn>)的数据。让我们来看一个很简单的例子:
```js
let FCC_User = {
username: 'awesome_coder',
followers: 572,
points: 1741,
completedProjects: 15
};
```
上面的代码定义了一个叫做`FCC_User`的对象,它有 4 个<dfn>属性</dfn>,每个属性映射一个特定的值。如果我们想知道`FCC_User`有多少`followers`,我们可以这样访问其`followers`属性:
```js
let userData = FCC_User.followers;
// userData 等于 572
```
这叫做<dfn>点符号dot notation</dfn>。我们还可以用方括号符号来访问对象中的属性:
```js
let userData = FCC_User['followers'];
// userData 等于 572
```
注意,在用<dfn>方括号符号</dfn>时,我们在括号里写的是字符串`followers`(用引号括起)。方括号符号让我们能用一个变量作为属性名来访问对象的属性(请记住)。若我们在方括号中不写引号而直接写`followers`JavaScript 引擎会将其看作一个变量,并抛出一个`ReferenceError: followers is not defined`的错误。
# --instructions--
用这样的语法,我们还可以向对象中***新增***键值对。我们已经创建了一个有 3 个属性的`foods`对象,请为其新增 3 项:值为`13``bananas`属性、值为`35``grapes`属性和值为`27``strawberries`属性。
# --hints--
`foods`应该是一个对象。
```js
assert(typeof foods === 'object');
```
`foods`应该有一个值为`13``"bananas"`属性。
```js
assert(foods.bananas === 13);
```
`foods`应该有一个值为`35``"grapes"`属性。
```js
assert(foods.grapes === 35);
```
`foods`应该有一个值为`27``"strawberries"`属性。
```js
assert(foods.strawberries === 27);
```
你应该用点符号或者方括号符号来设置对象的属性。
```js
assert(
code.search(/bananas:/) === -1 &&
code.search(/grapes:/) === -1 &&
code.search(/strawberries:/) === -1
);
```
# --solutions--