解构赋值其实就是如何优雅地取值罢了。
(1)对象原型:
![]()
![]()
使用了解构赋值后(对比原型),可以做到优雅地取值。
game是一个对象,用了结构赋值后,等号两边要一致,也就是说等号右边是个game对象,那么等号左边也应该是个对象。
![]()
大括号里面可以写game对象对应的属性。
![]()
完整代码:
![]()
![]()
效果是一致的。
(2)数组原型。
![]()
![]()
开始结构赋值
首先我们得明确等号两边数据类型保持一致。
等号右边是当前数组games,是数组类。那么等号左边也应该是数组[ ]
![]()
games数组里面有3个值,我们用a,b,c接收。
![]()
完整代码:(对比原型来看)
![]()
取值方式更加优雅,一行代码搞定。
![]()
(3)对象嵌套,对象作为一个属性的存在。
原型:
![]()
![]()
我结构赋值想取game对象嵌套下的giftPacks对象里面的属性呢?
![]()
![]()
(4)在嵌套对象中各自拥有的属性却巧合重名会怎么样?
原型:
![]()
![]()
很显然,const关键字不允许重名的存在。
方法一,将其中一个name属性改掉,改成name1。
![]()
方法二:重名属性可以添加别名(小名)区别开来,比如我们这里有2个同名的name属性,肯定要区分一个。
![]()
方法一和方法二效果是一致的。
![]()
如何在项目中做到准确地结构赋值?
场景1:在函数当中,数组作为实参,进行传参时,遍历数组做累加运算。
原型:
![]()
我们实参是个数组,传参也仅有一个参数arr,一个参数的话,所以是可以省掉小括号的。
![]()
整体:
![]()
那么实参是个数组的函数又怎么解构赋值呢?

那么这一块是怎么演变过来的。


实参作为对象传入函数。
原型:
![]()
在原型上改造,将对象最为实参传入。
![]()
在对象里面填入属性。
![]()
![]()
没有实参,直接定义形参。
![]()
![]()
有了实参后,直接覆盖掉形参。
![]()
![]()
作为函数返回值使用解构赋值
![]()
![]()
作为变量交换而使用解构赋值
![]()
![]()
JSON格式输出
JSON(JavaScript Object Notation, JS 对象简谱)
![]()
![]()
作为json格式使用解构赋值
![]()
![]()
有些时候,我们使用一些API接口调用,有些是嵌套的,数据并不是一步到位的,像这样模拟ajax请求数据,向后端发送请求。
目录下创建一个json文件,![]()
json文件里面首先有一对大括号
![]()
内容输入:
![]()
vue库下的axios请求,我们用它的CDN.
![]()
网址:https://www.bootcdn.cn/axios/
axios的CDN远程地址:https://cdn.bootcdn.net/ajax/libs/axios/0.1.0/axios.js
在index.html中导入这个CDN:
![]()
这个库的使用方法:
![]()
关于.then()的解释:axios返回的是一个promise,promise需要使用then方法来获取到返回成功的值,所以这里的then可以理解为是当这个文件获取成功之后所返回的内容。
已经(get到了)请求到刚刚我们在data.json中编写的数据
![]()
waring:这里有个小bug,就是axios发送的是http请求,我们在VSC编辑器安装了Live Server (实时加载路径)插件才能请求到json数据。
![]()
![]()
,如果是在文件夹下双击直接打开,是无法请求到的,因为它是file路径。
![]()
![]()
用箭头函数进一步优化代码,去掉关键字,一个参数不要小括号。
![]()
那么我们将如何取值使用,让我们一起来解构赋值吧。
![]()
![]()
上面是data数据是一步到位的。

它是在data下面的。
我们就要用到这样逐层解构了。(这只是个方法哈,内容对不上)

总结:

拓展:解决es6新特性浏览器兼容问题(关于项目开发)
对我来说太遥远了。
![]()
使用BABEL工具将es6语法转换为es5语法,es5当前所有浏览器适用。
具体视频:https://www.imooc.com/video/21656
网友评论