00:00
好嘞,各位,那在这一小节呢,咱们就来说说view是如何监测数组改变的,这一小节聊完了,我们就终于能把五里边遗留的这个问题啊,就给他说一下了,来把这个呢关掉,在八的基础上啊,我复制一份,名字呢给它改一下,序号呢是第九个了,然后它这个文件的名啊,和这个六呢几乎是一样的,只不过呀,我要把最后的那个对象啊,给它改成数组就可以了,不还是研究监测原理吗?在这儿改成叫做数组好了,各位八呢,我就关掉了,这名呢,再来一份复制,把这儿呢也给它改一下好了,还是围绕着这个案例去写啊,展示一些什么学校信息啊,学生信息,但是这回呢,你看着啊,各位,我不再关注绿色框里的这些信息了,你比如说学校信息,我不再关注了。学生里边的年龄我也不再关注了,名字我也不关注了,为什么呢?因为这些绿色框里的东西,同学你觉不觉得它无非就是对象,或者是对象里边套着对象这种形式,那我现在要关注的是什么呀?数组类型的数据就是这个,朋友们,OK,好,那这样啊,各位,我给学生呢,再追加一个属性啊,它也是数组类型的,这属性叫什么名呢?Hobby啥意思呀?爱好嘛,对吧,人有很多爱好啊,那每个爱好同学你说是不是有名字就够了,你比如说我喜欢打台球啊,我喜欢打游戏,对吧,有一个名字就够了,所以说在这儿呢,我就直接写字符串了,比如说第一个爱好抽烟。
01:31
哎,我一写第一个爱好,大家都知道后边那几个爱好是啥了,喝酒烫头是吧?诶,写上喝酒。汤头,OK,既然有爱好了,各位是不是得便利一下啊,那我就这样吧,各位把这个呢给他再复制一份啊,除了得便利朋友们还便利啥呢?这一堆爱好,那爱好这就不能写friend,就是hobby啊,那这块别用F了,用H吗?Hobby的首字母嘛,嗯,这个key呢,我不说了,我还用index,好吧,我也不做这个删除啊或者排序啥的,对吧?简单一个展示用它就可以好了,这块呢,删掉你知道咋写了,H千万不要在H点了,里边的每一项已经是字符串了,对不?各位好嘞,看一下效果。
02:17
爱好出来了吧?嗯,那打开控制台啊,刷新带着你观察一个事情,我输出VM点下划线,好打开你看啊,VM点下划线date,它是一个对象,对象里面有两个属性,分别是school和student,所以为这两个属性匹配了两套get,对不好,继续打开student,发现它又是一个对象,那student这个对象里面是不是有四个属性,那就得为这四个属性匹配四套,什么geter cer,对不?这些东西咱之前都聊过,接下来重点来了啊,各位看着啊,我打开好北这个爱好的时候,你注意观察,走同学,他告诉你爱好是个啥数组,打开同学注意观察,数组里面有三个数据,012是他们的索引,对吗?来,往下看,同学蓝色框里面你并没有找到为零服务的。
03:17
Get,你也没有找到为一为二服务的get说,老师我咋没听懂你在说什么呢?是吧?什么叫为零服务的get和啊同学,我这么引导大家一下呢,大家就能明白了,你看着啊,我把这个呢先剪切走,我把爱好啊写成一个对象。不再是数组了,第一个爱好叫H1,叫抽烟对吧?第二个爱好那以此类推,是不是得叫H2,这是不是叫H3啊,喝酒这儿呢,烫头,OK各位好了,这回你回来刷新页面是一样的对吧?同学你便利对象便利数组是不是都是用那个V杠那个指令啊好,我们观察啥呢?就是下划线date来各位啊,这些东西不再说了,因为刚才说完了,打开student啊,有这四个,有这四个好了,同学注意了,重点来了,打开同学有没有H12H3,有有没有为123服务的get有没有有。
04:22
H he是不是在这儿呢?有没有他的有啊。这回你明白我说的是啥意思了吧?由于你把好北写成了一个数组,各位,那你这个时候就会发现它并没有为数组里的某一个元素去匹配get,你比如说好呗,打开咱就拿一说话,一是不是喝酒同学有为一服务的吗?没有。如果没有为零、一、二、三这三个人服务的get,那也就意味着当有一天你通过这个零索引值去改这抽烟的时候,数据能改掉,但是view照样监测不到,也不会引起页面的更新,你说对吗?各位。
05:05
你像你改这个就不一样,同学你看,比如说我改名字,我问你名字只要一改谁就掉谁就掉,为名字服务的就掉,一掉人家里边的封装就重新解析模板,后续的整套动作是不是都开始执行。但是由于你的爱好里面,你想改掉抽烟,各位人家没有塞啊,人家没法拦截到你这次修改呀,换句话说,人家不知道你改了呀,对吧,各位,哎说老师那意味着就直接通过索引值去把抽烟改掉是不行的,哎是的,我们测试一下啊来走各位,我首先得拿到student,然后我再拿到什么呢?那个hobby,然后我通过索引值,诶我把那个抽烟给他改掉,比如说呢,叫做学习是不好瞧效果啊走。各位页面变吗?不变,那数据你改了吗?你自己瞧去呗,VM点下滑先date第student第谁呢?这个hobby同学,你看数据改没改,你改了,但是will不认,诶就这么回事。
06:17
哎,说老师呢,貌似现在说明白了,为啥V里边不能监测得到,直接通过索引值去修改数组里的数据,那是因为数组里边每一个元素,它不是靠get来实现监视的,对喽,那是靠啥实现监视的?那我怎么能让view you监视到,我修改了抽烟呢,让它变成了学习呢?啊,那说说它的原理吧,同学view的作者呀,是这么想的,他说如果程序员手里面有一个数组,哎,是1357这几个数字,然后他就想啊,说程序员啊想修改这个数组,那有可能掉哪些方法呢?那同学咱们捋一捋呗,如果说啊,你想往数组里面最后的这个位置新增一个元素,嗯,你是不是得用push。
07:08
想删除最后一个元素,是不是得用泡泡?想删除第一个是不用shift,想往前边加一个是不是得用on shift?啊,那想在数组的指定位置插入一个元素,或者说在指定位置删除一个元素,或者说替换掉指定位置的某个元素,你是不得用。想对数组进行一个排序是不是得用?想反转这个数组是不是得用reverse?对吧,反转数组吗?那同学你发没发现啊,我给你列举出来的这些蓝色框里的方法,它都是可以修改数组的。就是arr一旦掉了,这蓝色方框里的这七个都会引起arr自身的改变,那比如说那就这样吧,你只有掉了数组身上这七个能够修改数组的方法,我才承认你怎么办?哎,修改数组了,那你发现这个里面我就没有把一些呃,别的人列举出来,你比如说filter,我咋没列举这里边儿呢?Filter为啥我没放在这里呢?很简单,因为数组神圣的这个filter方法是不影响原数组的,那既然这个方法都不能够影响数组的改变,那我又怎么能承认你修改了数组呢?
08:33
哎,是不,各位,那有同学说老师我就想过滤一下嘛,那你就把过滤完生成的新数组替换掉,整个AR不就得了吗?哎,朱老师,那我调这七个完了我又就能监测到了,是的,好,那我们试一试啊各位来,那我想添加一个爱好在烫头的后面,那我得这么写吧,VM点找到数据点student.ho呗,我想添加一个是不是push,比如说添加一个叫做学习好走。
09:07
看响应式对吧,我又发现你把hobby这个数组变了,然后呢,重新解析模板了,页面呢,就有了一个最新的显示,OK,那比如说我想删除掉第一个爱好,抽烟是吧?这个伤身体是吧?删掉那写呗,Shift好走,删第一个是不是没了啊?那再举个例子,比如说喝酒这个爱好呀,不好,我想把它替换成打台球,那我得怎么写呢?还是找到这个Toby,你得用这个了,是不是Li呀,Li如果不熟的小伙伴呢,自己下去可以复习一下,OK,诶这里面得怎么写呢?我得是写零代表,我要操作里边的那个喝酒,然后怎么办?一是把它干掉,然后替换成什么呢?比如说打台球朝着回车是不是可以了。哎,所以说你发现啊,各位,只要你调的是人家给你说的那七个操作数组的方法,肯定页面是有反应的,那这个呢,也就解释明白了,为什么我们之前写这儿的时候,就是更新一个数据的时候更不掉,为什么马冬梅不能变成马老师,就是因为你直接操作了数组的索引值,用赋值的方式去改,这肯定不行,你要真想把马冬梅变成马老师,你得这么玩,各位把这行呢注掉,写好注释啊,叫做补奏效好了,再来一个咋写this.persons拿到这堆人,接下来呢?
10:34
是不是得调这个lie咋写零逗号一逗号,把你要替换的那个是不是给它拿过来呀?好了,往这儿一写它就奏效了,来我们看一下啊,打开放大一点走看是不是变了,哎,OK,那这个时候呢,可能就有同学又有疑问了啊,诶说老师啊,那你说view是怎么监测得到我掉了push的呢?
11:00
说老师就拿你刚才这个举例子啊,你说得掉push,然后呢V才能知道他咋知道的呢?哎,那说一下各位,他用了一个技术啊,叫包装。说老师这是什么意思呢?你听我说一下啊,你是不是找到了一个数组叫hoby,你是不是调了这个push,那我告诉你啊,各位,就你所调用的这个push,哎,就这蓝色的push屎已经不是庶祖身上最原汁原味的那个push了,哎,也就是说的再直白一点,各位,你刚才调的这个push啊,不是谁呢?来不是这个人,不是瑞原型对象上的那个push了,同学,原形对象上是不是有一个push,这个push是给谁用的,给数组用的?也就是说各位你正常写个数组,你比如说我写一个数组,数组里边的是这个13579,同学来回车,那你说这个AR能不能调push,可以我往里边再添个十行不行?一三五七九十就随便来一个能行吧?六是啥意思呀?就是数组的长度变为六了,你看一下AR,各位是不是有那十,那我想问你的是arr.push你调,那push是打哪来的?同学你觉不觉得其实是一层一层找的这个arr身上,你看同学我给你输出它是没有push的,它沿着原形找,就找到了A的原型对象,那你说是不是就找到了谁呢?往下找你那个push是不是在这儿。
12:33
所以说我们可以验证一个事情啊,各位你把这个折叠起来验证这么一个事情,ARr.push它所掉的这个push呢,是否等于你这个A点圆形对象身上的这个push,你说是不是呢?同学,一定是因为你这个AR啊,你看这个红色框的是你自己亲自定义的。View没有介入去管理这个AR,你说对吗?各位,这A不招谁不惹谁,就是我们自己定义的一个数组,我就是简简单单掉了一下数组身上的push,所以说掉的其实是谁,而瑞原型对象上的那个push,那怎么证明刚才爱好点push掉的就不再是数组最原汁原味的这个push了呢?我们可以照样去验证,你看着我这么写,找到那个。
13:21
这个对吧,然后找到谁呢?这个push,但是你别调用啊,各位咱不看它调,咱就想看看他到底是谁对吧,等等等来AR点儿pro type点儿找到谁push同学你看结果。这回明白了吧,你是掉了一个数组身上的push,但是你可要注意啊,你这个数组,你这个红色箭头所指的好,这个数组可是被view给管理了,VIEW1管理不要紧啊,各位你调那push啊,就不再是正常原型对象上那个push了,老师,那我调的是哪个push呢?那你听我说一下啊,各位,红色的这个push啊,其实是view给你写的一个push,哎,就是沿着how北的原形找你先找到的,其实是谁呢?我又给你写的这个push,又给你写的这个push呢,里边他做了两件事儿,你听我说各位,第一件事儿,他还是规规矩矩的给你调了一个正常数组身上的push方法,如果他不做第一步,同学,那咱就只能这么说。
14:24
V写这push呢,就没有意义了,这个push不会引起元素的变化,不会让你在末尾添加一个元素,那你这push还有什么意义呢?所以说我又给你写了一个push,里边第一件事儿还是正常调原型对象上这个push,那么第二件事儿呢,那就是重点了,各位第二件事儿呢,他去重新解析模板,生成虚拟do等等,那一套流程开始走了,也就是说白了,各位view对数组的监测呢,其实是靠包装数组身上的常用修改数组的方法实现的。数组身上原本有没有push,有我不让你用,你用我的这个,我的这个里边也是用到了最原始的,并且我做了一个特别重要的事儿,二就是重新解析模板去,所以说同学他是这么做的,说老师你说这靠谱吗?是这么回事儿吗?我们去官网呢,寻找一下答案,找到学习,找到教程,这里边呢有一个列表渲染,这里边有一个叫做数组更新检测,同学读一下这句话,哎,将被真听的数组的变更方法,啥叫数组的变更方法?说白了这方法能影响原数组,哎进行了什么呢?包裹。
15:33
包裹是啥意思?正常的push是蓝色,刚才你写那是红色,红的把蓝的包上了,这就是包裹是吧,所以你读后半句啊,也将处罚视图的更新,这些被包裹过的方法为同学你发现就是刚才我给你列举的那七个,你说对吗?这几个人能对数据进行增删改查啥都行,哎,所以说你看他说你可以这样去做,明白了吧?哎,这就是他监测数组的一个原理,那这个时候呢,可能就有同学说了,老师明白了啊,你给我讲的就是只要你想在view里面改变数组,你就必须得掉人家提供的这七个方法,不掉就不行,只要我不掉v you就一定不会发现我的数组被改变了,其实呢,也不是,你还有另外一种办法,而且呢,我还给你讲过,各位在这儿我们测试一下啊,你比如说同学们,我想把抽烟喝酒烫头里的喝酒,还是把它。
16:36
变成打台球,你可以用这种方法去做啊,各位你瞧着view.set这个还记得吗?哎,直接找到你要操作的那个数组,VM点儿啊,你不嫌麻烦就下划线,Data点什么呢?找到student,再找谁找那hobby好了,停下来不要再写了,我拿没拿到这个数组,拿到了,你想动数组里的第几个是不是第二个,那第二个的索引是几,索引值是不是一对吧,抽烟是零,喝酒是一,好了,你想把它变成什么,变成打台球,好,这时候注意敲回车走你诶怎么样,各位是不是也可以,所以说view也可以这样去玩,对吧?我不用数组身上提供那七个,我可以直接去把它改掉也行,但是用的不多,那同理,各位你也可以V点,然后那叫,然后里边写的东西呢,跟这个一模一样,好吧,哎,咱在这儿呢,就不展示了。
17:36
而且呢,刚才我所有的操作呀,还能再简单一点,诶你比如说啊各位来我刷新一下,说呢,我想把那个爱好里边添加一个,我刚才是怎么写的呢?我是这么写的,说VM点下滑线date,再找到student,再找到什么呢?他的hobby,再找到这个push,然后往里边添加,其实同学们想想没有这么个必要,我可以把这个下划线date给它省略掉,对吗?同学老生常谈的一个问题,什么呀,数据代理,你说我这么写行不行,当然可以呀,还有就是我通过这个view.set我想改掉那个抽烟的时候,那我刚才是怎么写的,我是这么写的,VM点下划线data,然后我再找到student,然后我再找到爱好这个数组,然后咋的?哎,我再写这零,然后呢,我再替换,比如说打游戏,其实也不用写的这么麻烦,这个下划线date是不是可以?
18:36
分掉,因为有数据代理嘛,对吧,我刚才为啥写着呢,能让大家明白一点啊,我的的确确是往student里边加东西了,那其实你通过这条线是不是也是可以的呀?好,那我们试一下啊,来走对吧,是不是也给它修改掉了啊好嘞,各位,那这个呢,就是整个它对数组监测相关的知识,好那这小节呢,我们停一下。
我来说两句