00:00
OK,同学们大家好,我是风雨,那我们这节课呢,来讲一下这个ES6的结构复制,那么什么是结构赋值呢?讲解构赋值之前,我们先来看一下,在ES物里边,如果说我们需要使用一个声明命令,比如说吧,来声明多个变量的时候,我们可以这么写,比如说YAB等于一,然后紧接着还有一个BB呢,等于二,再来一个,比如说C等于三,OK,那这个呢,是ES5的一个命令啊,声明多个变量的这种方式,那么在ES6里边呢,我们可以不这样写了啊,不这样写,那可以怎么写呢?可以用种更形象的写法来写这个东西,首先我们来个let,当然了,这个前面生明的关键字是。呃,Y和let都是可以的啊,只不过这边我们写ES6呢,我们肯定是使用这个ES6的声命命令,那么这个地方呢,就写一个let,那我一样的,我要声明一个ABC,那么这个ABC的值呢,同样是123 OK,那么可以怎么写呢?我们可以这么写。
01:06
A逗号B逗号C紧接着这边一个等号,那么这边值就是123 OKOK,那这这个时候当我们来输出我们的AB。C的时候。我们就能够发现呢,他是能够拿到这个123的值,好我们最后返回来看一下。执行是吧,不能。刷新OK可以啊,123的值,那这个呢,就是我们呃一六里面提供的这个结构赋值,那么结构赋值什么意思呢?结构赋值其实它的本质上就是说按照一定的模式,把我们这个等号两边的这个左边的变量以及右边的值。给对应起来,那这个呢就是结构赋值,那么结构赋值我们来看一下,首先我们发现左边呢,是一个像数组一样的,那这个像数组一样,这个中括号呢,它其实就是这个模式,然后右边你左边既然是一个像数组一样的模式,那么右边也得像一个数组一样的模式,所以这个时候这左右两边等号,左左右两边的这个模式是相同的,那么相同的时候这个值它是怎么对应上的呢?比如说A为什么对应的是一,而不是二或者三。
02:27
那么同理BC也是一样的,那这是为什么呢?就是因为首先这个这个模式它看起来像个数组对吧?那么它对应的时候呢,就是使用的是咱们这个数组的下标,就比如说把当前这个看作一个数组的时候,那这个时候A是不是在数组的第一项下边为零,所以它对应的右边的这个数组也得找到下边为零的那一项,所以它就找到了一啊这个呢,就是这个结构负值,那么结构赋值呢。这种呢,只是一种最基本的最正常的写法,那我们还可以再来看一下,还可以怎么写,比如说。
03:02
我们一来列成三个变成A等号,紧接着这样呢B,然后再来一个C,然后这边的模式你看首先我们左边从外层来看的时候,是一对花括号,花括号里边肯定是有三个变量的,对吧?那么这三个变量首先这地方得有一个对不对,那这个A呢,它一样的对应了这个1OK,那么紧接着我这样写。我跟第一次写的时候右边是一样的,OK,那么这个时候。我们这个二对应的是B呢,还是整个这个数组里边这个像数组一样的这个东西。到底是哪一个呢?我们来看一下。逗号B逗号COK来保存,你发现这样就报错了,对吧?诶这样就报错,为什么呢?因为这个模式对应不上了,那么对应不上的时候,这个时候我们要使用这个,或者说我们要让这个B来取到这个二的时候,怎么办呢?我们得这样做,我们也得把二给它包起来,那把它包起来,那么现在包起来以后,左右两边这个模式是不是就一样了,那么一样的时候呢,这个ABC呢,就能取到值了。
04:09
能明白吗?那么一样的道理。比如说我现在呢,我在里边这个右边数组第二项的啊,这个子数组里边我呢,再给他,比如说来写一个逗号,前面写个四,OK,那么这个时候这个B对应的是哪一个呢。那肯定对应的是四对吧,OK,来保存发现是134没问题,所以为什么呢?因为里边的这一项是吧,跟这一项你看它们都同属于最外层数组的第二项下标的唯一,唯一的时候,他们整个也是一个结构复制的一个模式,对不对,因为这时候它也是用括号包起来,括号包起来的,那这时候呢,B呢是在这个数组的第一项,所以它理所当然的要找这里面这个数组的第一项,所以拿到了四啊,这个呢,是数组的结合负值,那么紧接着我们再来看个东西。
05:04
刚才呢,我们看的是这个数组的方式,那还可以使用什么呢?还可以使用像对象的形式啊对象,那么对象呢,我们这边呃,左右两边写的就是对象的这种模式了,那么OK,我们呢,可以来这么写,比如说A。B再来一个CC,那这边呢,我们把这个let忽略掉的时候,这个就是一个对象对吧?属性为A,值为A对吧?属性为B,值为B,属性为C,值为COK,那这时候呢,它来对应这边的时候,他们这种匹配的模式就不再像数组一样了,因为你数组使用的是下标,那么你既然是对象形式的时候,很明显我们对象是没有下标的,对吧?那么对象没有下标的时候,使用的是什么呢?使用的当然是对象的属性,所以这个时候呢,我们的属性一定要对上,比如说我要让A取到一的时候,该怎么写呢?我们这个对象这个等号两边的两个对上,他们模式要一样的时候,我们说了它用属性来取,所以右边的这个对象它的属性呢也得为。
06:06
再来个B为三逗号C为五,那这个时候呢,当我们再来输出这个ABC的时候呢,诶,它就能够取得我们的这个135了,我们来看一下A逗号B等号COK来保存,你就发现报错了是吧?诶这少了个括号。啊,少个括号,这个括号不能漏啊,不能漏来保存就是135对吧,没问题,那么这个时候有个问题,就是这个A输出,这个ABC输出的这三个变量是谁呢?首先我们在地方使用的它一定是个变量,对不对?它肯定不能是右边的,为什么?因为右边是个对象,你要取对象属性是不能直接访问的,你必须通通过它对象本身,然后呢,点操作去拿到对应的属性才能取出来值,所以这个ABC绝对不可能是这边对吧?那么是左边,但左边的时候呢,这个左边有A属性,直点为AOK,那么这个时候还性和道理,假设我们把这个忽略掉啊,把这个忽略掉,把它看作一个对象的时候,我们要取这个值的时候,是吧?诶,我是不是也得通过对象来点它呀?啊,只不过呢,这个地方要注意的是,它现在是解构负值,那这个A和这个A呢,它仅仅是一个模式能明白吗?因为我们这地方声明的是变量对不对,所以它跟我们常规理解的这种对象呢。
07:25
在这个地方看起来有一点区别对吧,有点区别其实呢,主要是因为这个属性,这个时候是作为模式的,就好比我们取这个数组的时候,我们没有通过数组,然后中括号它的下边去取值吧,而是直接访问这个值对吧?所以这个ABC呢,就是这个ABC啊,就是这个ABC,那比如说我把这个C换为多少,我把这个C给它换为一个R啊,这个B呢。我给它换为ER,那这个A呢,我给它换为W,那这时候我们来输出这个WW我们来保存一下,看看是不是135保存还是135对吧,还是135,所以它取的值就是这个W12这三个变量啊这三个变量,那这个呢是这边不一样情况,那我们可以来撤回来看一下。
08:12
刚才我们写的是属性A是吧,诶,值也为A,那么要注意的是,当我们这个属性和这个值,或者说这个模式和这个值长得一模一样的时候呢,我们可以简写,怎么简写呢?就这样就可以了,删掉啊就是ABC,那现在这个时候呢,它其实就是刚才我们写的那个属性和值是一是一样的这种一种简写的方式啊,一种简写方式,所以就说我们来访问ABC的时候呢,不是使用模式本身,而一样的是使用它的值还是135啊,还是135,那这个呢,是对象的啊,这个结合复值,那要注意的是对象里边也同样可以再嵌到一个子对象,那只要模式跟数组一样匹配上呢,就是可以取到值的,好吧,那么再往后我们再看最后一个,那刚才我们讲的呢,是这个数组以及对象的结构赋值,那么除了这两个呢,比如说还有一些,呃,像这个字符串也是可以结构复制的,比如说我们来let,那么我们来let这个。
09:12
呃。来声明这个这个变量的时候,我们要跟字符串的几个负值,我们来看一下怎么写,那么我们知道这个呃字符串其实它也是有下标的,对吧,所以这个匹配的模式呢,我们得使用这个呃中括号的这种形式啊,就像数值一样,那比如说ABC,那ABC那这边呢,我们来个字符串,那字符串我们就随便写一个,比如说hello,那hello OK,那现在呢,我们是三个变量,那右边呢是个字符串,那这时候我们来取一下ABC,看一下是什么东西,相当于AB。C来保存,你发现它取的是HEL,那这是为什么呢?这是因为我们说了字符串其实也是下标的,那么当你右边是字符串的时候呢,诶,它也是通过下标这个模式来进行匹配的,对不对?那么来匹配的时候呢,你这个是下标A是下标零,这是下标一,这是下边二,所以呢,它同样的要进字符串里面去取下标012的,那后面两个。
10:17
没有对应的,那么就就这个不管啊不管,那如果说我还有个DEABCD还有个,那这个时候呢,我们的这个de呢,也能取到这个这个lo啊,我们来看一下,比如说这两个D,再来一个EK保存,那lo没问题,那如果说当我这个左边变量多的时候呢,比如说再来个FK,那么这个时候呢,我们来输出一下F。来输出一下这个F,那这个F很明显是不能在这边去取到对应的值的,那这个时候呢,它就是啊,你find的啊,啊你方的,那这个呢,是我们这个字符串结构复制好吧,那谢谢大家。
我来说两句