# 章序号/节序号/节/笔记序号 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`* # 备注(经验集/错误集) ## 参考资料