00:00
好,那么我们ES6的第三个非常典型的特性呢,就是它的结构赋值。那么我们先来创建一个文件吧。这个文件为了让大家看得更清晰啊,我用的是中文的名字定义的,但是咱们平时在项目开发的过程当中,大家不要用中文名字,尤其是项目名啊,文件名啊,不要这么写啊,这其实并不是一个好习惯,好,那我们先来说一下这个,呃,一个。一个前提代码,呃,就是它呢,有若干种情况的结构赋值啊,我们先来,呃说一下数组的结构,结构哈,解构,解构是什么?就拆解的意思啊,拆解它的构造,然后第二个呢,是对象结构。对象好,我们先来说数组结构,那么既然是数组结构,那么一定会有一个数组存在。比如说看。
01:07
F,嗯,东北F4啥来着。小沈阳、宋小宝、刘能。正好赵四哈,好,就这几个人啊,然后接下来呢,啊,我我想这样就是因为他们呢,是定义在一个数据当中的,当然我可以把这个数据给它打印出来。看守点老的F4先打印一下看看啊。我们可以按住键盘上的CTRL加L,然后呢,让这个屏幕呢,就相当于起到一个清屏的效果好,然后接下来呢,我们看no。
02:07
031车好,这样的话呢,我们就可以看到这个数组里面的这四个成员了啊,但是现在呢,我有一个需求,我的需求呢,就是把这数组里面的四个成员呢,分别赋值给四个变量,那么传统情况下呢,我们可以这样做,比如说let啊,UC1等于,或者是说呃,这样吧,沈沈阳啊沈阳等于F4。中括号零是吧,啊,然后light小宝。等于F4中括号一对吧?依此类推,好,我们把四个人的人名呢,依次的赋值给四个成员,好,那接下来呢,我们可以把它打印出来can.she羊啊,然后接下来再打印一个can.lo行好对吧?嗯,好,这都没有什么问题,但是呢,如果项目当中的成员过多的话,我们这样一个一个去赋值呢,未免显的有点麻烦,有点啰嗦,有点繁琐啊,有没有一个简单的方法呢?我们可以这样写,就叫做结构赋值,什么叫结构赋值呢?我们定义一个变量,这变量呢是一个数据。
03:31
而这数组里面呢,有四个变量,比如说沈阳。好,然后呢,还有小宝。还有刘能。还有赵四明白哈,然后接下来呢,把谁分别的赋值给这数组当中的这个四个变量呢,把F4给他,所以呢,这是F4。好明白哈,那这样的话呢,我们就除了沈阳和小宝之外呢,我们还可以继续的把刘能pencilo表love刘能以及can log。
04:13
赵四也打印出来明白哈,好,那接下来呢,我们来看一看,可以完成我们的这样的一个目标,那大家看一看,是不是这样的四个值分别赋给了四个变量啊,而取而代之的呢,就是这样的一句话啊,之前呢,我们需要写四句话。对吧,啊,所以这是结构赋值,主要就是为了啊提高我们的呃,应用程序的开发效率吧,让代码更简洁啊,它的目的就是让代码更简洁,好,那这个是数组的结构,接下来呢,我们来看一下对象的结构。对象的结构呢,我们再定一个,比如说cost。然后接下来呢,比如说我有一张赵本山哈。啊,对象的话,未来有可能啊,包括数组啊,如果你说我未我未来我内容可能会变啊,你这个时候呢,可能就呃,就可以用小写的了,明白吧,比如说这个F4里面,我可能就还有第五个人,第六个人,那你这个当时你定义的时候呢,你就不用非得大写,就是小写了,所以在我们的这个啊,Java script当中,到底这个后面的这个task,它到底是用大写还是用小写,完全是取决于你这里面的内容会不会变啊,如果会变的话,那么我们就小写,如果不会变的话,那么我们就大写啊,那当然刚才我们强调了这里面的这个,呃,这个成员变化的话,其实并不影响它的地址的变化,所以呢,也是一个常量,对不对?好,然后接下来呢,这面对象结构,比如说我这有一个赵本山啊,比如说未来它可能会变,那我这块就是小写对吧,然后呢,我这边来个大括号,比如说它username等于3/2,然后接下来呢,它的age。
05:55
这只,嗯,我也不太知道,就不想吧。然后接下来呢,他的,嗯,比如说他他他有什么能力呢,他可以演小品,演小品对吧?嗯,然后接下来呢,啊,我们可以给他定一个方式式看点,Log小燕小品,好,这是赵本山啊,他的一个人的一个基本的概况和一个描述,那接下来呢,我呢,现在就想把它的这个特性啊,还有它的这个能力啊,都分别的复制到不同的呃变量以及不同的方法的应用当中,那这怎么写呢?啊,如果传统的方式呢,我们可能会这么写like啊。
06:47
Username等于ABS点。Username对吧?啊,然后let age等于abs.H啊,然后light,比如说他有什么,呃,这个能力呢,在演小品。
07:11
然后等于,等于什么呢?等于ABS点小撇啊,当然了,注意啊,这个地方不要写圆括号,写圆括号变成调用了,我们现在要做的呢,就是把这个演小品这个方法的引用复制给谁呀,复制给这个变量,而这个变量就是什么类型的呢?就是一个方式类型的了啊,它是function式类型的,所以你要调用的时候呢,你就这样写啊,就是。cancel.lo username,然后接下来呢,cancel.lo age,在接下来呢,直接调用它,调用它啊小品好,然后接下来呢,我们来打印一下。大家看演啊演小品,它它应该是个引号对吧?好,然后接下来呢,我们来看一下,再从来运行回车,大家看就是赵本山年龄营销品是吧,这样的话呢,就打印出来了,当然这种情况呢,你这个这块的名字和这块的名字不一定非要一致啊,比如说这个我就写一个其他的名字可以呢,肯定可以啊,那如果是这样的话,这个地方我就打印111啊。
08:26
好,这样的话呢,我们就把这纸封上了,但是很显然这种复试方式呢,也是稍微有点麻烦的,所以呢,我们也可以用结构复值的方式,那结构赋值怎么赋值呢?这样去写也是一个let,然后上面数组的结构赋值呢,我们定义的是一个数组类型的一个变量列表,那么如果是对象类型的结构赋值呢,我们就定一个对象类型的变量列表,所以let中括号,然后这块呢,我们写u name。写age写演小品好把谁复制过来呢?直接把赵本山复制过来就可以了,所以呢,你会发现上面的三句话呢,在这个地方就变成一句话了,那当然了,输出的时候呢,我们要按照这里面的成员的名字进行输出,这样写,然后呢,我们来运行一下好。
09:19
赵本赵赵本山我看一下啊。啊ABS哈啊,这赵赵赵本山,这赵本山我改一下吧,赵本山赵本山赵本山哈一要赵本山好,然后接下来呢,我们来运行一下。好,这样的话,大家来看一下,是不是还是跟刚才的特性一样啊,但是跟刚才不同的呢,是它这里面的结构赋值呢,它会自动的把这个对象的名字里面的属性名对吧,你推测也能推测出来,它是自动把这个属性名啊,匹配到前面我们变量定义当中的同名的一个变量当中,所以赵本山它下面的这个userc nameme这个属性会自动的赋值给这个user nameme。
10:09
然后呢,它下面的A这个属性会自动的复制给这个A这个变量,同样它下面的这个引小品这个方法的引用会自动的复制给他啊,所以这就意味着呢,我们这面的名字必须和这个里面的属性名同名啊,如果你这样。跟刚才一样是吧,我就想这样写行不行呢,肯定是不行的呀,因为嗯代码毕竟他不是人哈,他没有什么智能。好,大家看是不是它这29行,29行在哪,是不是就没有啊,他没有,然后上面这on five能看看这这也没打印出来对不对,这个是赵四后面打印的是on find on find,然后29行这块就是说这个嗯,Its not function,所以那很显然是这三行一句话也没打印出来,对不对,所以呢,这个地方呢,我们必须是赋予给同面的变量啊,这样是可以的,好,我们再来最后给他运行一下。
11:16
啊,这块呢,就是我们所说的结构复制,当然了,有的时候呢,我们的啊一个。我们的一个对象当中啊,我们的一个对象当中,有可能他的成员特别多啊,他除了username age对吧,而且可能还会有这个,呃,比如说S性别啊,性别男。等等对吧。然后home hometown,比如hometown辽宁对吧,好,那你它这个内容特别多,然后我们是不是在这个地方解读副职的时候,一定要把他所有的啊,他的成员都给他写上呢。
12:05
当然你如果都需要的话,都显然是可以的,但现在假设说我就需要仨这两个,我不需要啊,我不需要后添加的这两个,我只需要前面这个,因为我用不上,但是所以呢,那你就写前面这个,当然了,你如果说我就要一个,我就要知道赵本山的名字是什么就行了,那你就可以这样去做啊,也可以。这样的话呢,我们就只打印。好,是不是也可以啊,所以呢,这块是我们所说的结构赋值啊的一个比较特殊的用法,就是需要什么我们就获取什么,不需要的就不获取啊,后面我们将会有一个类似这样的应用啊,就是这个对象里面可能有几十个变量,然后呢,几十个变量,有的时候呢,我们可能用A,有的时候呢,我们可能用B,有的时候呢,我们可能用这个ABS里面的这个ZBS里面的C啊,那你这样的话,你就可以这样去写啊,所以这个呢是我们的一个叫做结构赋值,那么这里面我们刚才强调有两种,一个是数组的结构,还有一个呢是对象的结构,相对来说对象的结构我们用的会比较多一些,所以这两个语法啊,新的语法大家要知道。
我来说两句