# 章序号/节序号/节/笔记序号
codecademy, objects
# 概念阐释
## 语义
常用的程序代码中,通常会使用嵌套对象。
## 语法
```js
let object = {
nestedObject1: {
property1: value,
property2: value
},
nestedObject2: {
property3:value,
property4:value
};
}
```
### 访问属性
```js
object.nestedObject1[内嵌对象的内嵌对象].属性或方法
```
### array of objects 对象中的数组
相似的有[[js 库 Handlebars "Each" and "This"]]
```js
let spaceship = {
passengers:[{
passenger1:
{
name:'harry',
age:35
},
passenger2:
{
name:'dog',
age:8
}
}];
}
```
- 访问
```js
let firstPassenger = spaceship.passengers[0].passenger1;
```
### 数组中的对象
会当作[[JavaScript 数组]]来处理,并可以使用数组的内置对象。
```js
const GPA_BENCHMARK = 3.5;
let students = [
{
id: 1,
name: 'Egill Vignission',
gpa: 3.4
},
{
id: 2,
name: 'Bianca Pargas',
gpa: 3.8
},
{
id: 3,
name: 'Aisling O\'Sullivan',
gpa: 3.4
},
{
id: 4,
name: 'Sameer Fares',
gpa: 3.9
}
];
let honorRoll = students.filter(student => {
return student.gpa >= GPA_BENCHMARK;
});
console.log(honorRoll);
```
# 举例子
```js
const spaceship = {
telescope: {
yearBuilt: 2018,
model: '91031-XLT',
focalLength: 2032
},
crew: {
captain: {
name: 'Sandra',
degree: 'Computer Engineering',
encourageTeam() { console.log('We got this!') }
}
},
engine: {
model: 'Nimbus2000'
},
nanoelectronics: {
computer: {
terabytes: 100,
monitors: 'HD'
},
'back-up': {
battery: 'Lithium',
terabytes: 50
}
}
};
```
```js
spaceship.nanoelectronics['back-up'].battery;
```
# 类比、比较与对比
# 问题
- [练习题](https://www.codecademy.com/courses/introduction-to-javascript/lessons/objects/exercises/nested-objects)
1. 创建一个变量capFave,并将队长最喜欢的食物(她“最喜爱的食物”数组中的第0个元素)分配给它。确保使用嵌套访问的方括号和点表示法来获取食物的值(不要只是将值复制到变量中!)
2. 现在,乘客属性的值为null。创建一个乘客**数组对象**,该对象具有至少一个键值对。
3. 创建一个变量`firstPassenger`,并将第一个乘客赋值为其值(即你刚刚创建的spaceship.passengers数组中0号索引处的元素)。确保使用方括号和点符号来通过嵌套访问获取乘客对象(不要只是将对象复制到变量中!)
# 问题答案
```js
let capFave = spaceship.crew.captain['favorite foods'][0];
let spaceship = {
passengers:[{
passengers1:{
name:'harry',
age:35,
hobby:['coding','film']
},
passenger2:{},
passenger3:{}
}]
}
let firstPassenger = spaceship.passengers[0].passengers1;
```
- *要 print passengers1 和cookies*
- *数组后面也要有大括号{ }*
- *在调用数组对象时要写明index和值的名字`[0].passengers1`*
# 备注(经验集/错误集)
## 参考资料