# 章序号/节序号/节/笔记序号 codecademy, object # 概念阐释 对象中的属性相当于变量。针对对象进行的访问、修改、增加、删除。 ## 使用 dot notation访问属性 ![](http://image.harryrou.wiki/2023-03-26-CleanShot%202023-03-27%20at%2007.37.23%402x.png) ## 使用中括号 bracket notation 访问属性 ![](http://image.harryrou.wiki/2023-03-26-CleanShot%202023-03-27%20at%2007.46.40%402x.png) 在访问其中包含**数字、空格或特殊字符的键**时,我们必须使用括号表示法。在这些情况下如果没有方括号,我们的代码就会抛出错误。 ```js const randomObj = { 'account#':'1011111A', 500:'01/01/2018'//数字作为属性名称 } ``` ![](http://image.harryrou.wiki/2023-03-26-CleanShot%202023-03-27%20at%2007.25.18%402x.png) - 带有dash的,例如full-name也必须用`[full-name]` ## 对象作为函数参数 对象名称与属性名称作为函数的参数访问属性值: 使用括号表示法,您还可以使用括号内的变量来选择对象的键。 这在**使用函数**时特别有用[[js objects Factory Functions 批量生产对象]]: ![](http://image.harryrou.wiki/2023-03-26-CleanShot%202023-03-27%20at%2007.30.56%402x.png) 函数里面设定一个访问对象属性的公式,调用函数`函数名(对象,属性)` ## 修改&增加对象 ```js let spaceship = { 'Fuel Type' : 'Turbo Fuel', homePlanet : 'Earth', color: 'silver', 'Secret Mission' : 'Discover life outside of Earth.' }; ``` ### 重新赋值 ![](http://image.harryrou.wiki/2023-03-26-CleanShot%202023-03-27%20at%2007.58.54%402x.png) - 如果对象中有这个属性,新的值将代替原来的值,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 变量 ![](http://image.harryrou.wiki/2023-03-27-CleanShot%202023-03-27%20at%2008.02.59%402x.png) - 不可以重新赋值const对象`spaceship` - 但可以修改或新增属性`spaceship.type` ## 删除属性 ![](http://image.harryrou.wiki/2023-03-27-CleanShot%202023-03-27%20at%2008.06.27%402x.png) - 可以使用`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) # 问题答案 # 备注(经验集/错误集) ## 经验集 ## 错误集 ## 参考资料