# 章序号/节序号/节/笔记序号
codecademy, object
# 概念阐释
对象中的属性相当于变量。针对对象进行的访问、修改、增加、删除。
## 使用 dot notation访问属性

## 使用中括号 bracket notation 访问属性

在访问其中包含**数字、空格或特殊字符的键**时,我们必须使用括号表示法。在这些情况下如果没有方括号,我们的代码就会抛出错误。
```js
const randomObj = {
'account#':'1011111A',
500:'01/01/2018'//数字作为属性名称
}
```

- 带有dash的,例如full-name也必须用`[full-name]`
## 对象作为函数参数
对象名称与属性名称作为函数的参数访问属性值:
使用括号表示法,您还可以使用括号内的变量来选择对象的键。 这在**使用函数**时特别有用[[js objects Factory Functions 批量生产对象]]:

函数里面设定一个访问对象属性的公式,调用函数`函数名(对象,属性)`
## 修改&增加对象
```js
let spaceship = {
'Fuel Type' : 'Turbo Fuel',
homePlanet : 'Earth',
color: 'silver',
'Secret Mission' : 'Discover life outside of Earth.'
};
```
### 重新赋值

- 如果对象中有这个属性,新的值将代替原来的值,vegetable oil代替Turbo Fuel
- 如果对象中没有这个属性,将会在对象中创建一个新的属性
- 如果一次想要添加1个以上的新属性,需要用到[[js objects 标准内置对象]]`Object.assign(target, sources)`
### 增加新的属性
和[Object.assign()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)的结果一样。
```
const robot = {
model: 'SAL-1000',
mobile: true,
sentient: false,
armor: 'Steel-plated',
energyLevel: 75
};
//增加新属性
robot.laserBlaster = true;
robot.voiceRecognition= true;
console.log(robot);
```
## const 变量

- 不可以重新赋值const对象`spaceship`
- 但可以修改或新增属性`spaceship.type`
## 删除属性

- 可以使用`delete`选择器来删除属性
# 举例子
# 类比、比较与对比
[[JavaScript 标准内置对象]]中的属性都是遵循这一语法。例如:
```js
console.log('hello'.length); //prints 5
```
`.length`是一个字符串属性,用了查看字符的个数属性
# 问题
- [练习题1](https://www.codecademy.com/courses/introduction-to-javascript/lessons/objects/exercises/object-property-access)
- [练习题2](https://www.codecademy.com/courses/introduction-to-javascript/lessons/objects/exercises/object-property-access-ii)
- [练习题3](https://www.codecademy.com/courses/introduction-to-javascript/lessons/objects/exercises/add-property)
# 问题答案
# 备注(经验集/错误集)
## 经验集
## 错误集
## 参考资料