00:00
好了各位,那姓名案例呢,咱拿差值语法写了一遍,拿这个methods写了一遍,差不多了,在这一小节呢,咱们拿计算属性去写这个姓名案例,好在二的基础上啊,我复制一个文件啊,把这些都关掉,改一下名字,编号呢,应该是第三个了啊,不是methods实现是计算属性啊,好,Copy呢给它删掉,然后呢,我把这个整个名字也给它复制一份。来到这把它也改一下,把那三呢也给它删掉好,姓名这些都留着,但是全名注意了,各位,我是不是不用这个methods了,那你这个nameme函数呢,就不要再去调用它了啊,那具体写什么呢?也不知道,所以说呢,先写几个问号好再往下看,EL留着,姓和名留着,但是这个函数是不就没有必要留着了呀?诶那就把它删掉,那他一删不要紧,Methods里面是不是没有东西了,那methods呢就也删掉,但是你不要误会我的意思啊,各位不是说呀,写了这个计算属性,我这就不能写这个methods了,同学,EL啊,Data呀,Methods呀,这些配置项之间是不发生冲突的,我可不是那个意思啊,说有这个计算属性了之后,这methods都不能不是那意思,你就比如说各位啊,你这如果有一个按钮有个but啊按钮就点我这按钮呢,有一个点击事件,只要一点击啊,就掉DEMO这个函数,那你就把你的DEMO老老实实写在这儿对不对,那你的master就不影。
01:27
你想谁把它一折叠就可以了,但是问题是现在没有这个按钮对不对,那这masters呢,我也就不需要了,好了,给它删掉来,那咱接下来说说这个计算属性吧,同学,我觉得呢,是这样啊,你想理解好计算属性,你就得先整明白一个事儿,到底什么东西叫属性是不好说一下,各位对于view来说呢,他认为你data这个配置项里面所写的东西啊,就是属性,红色的叫属性名,哎,蓝色的呢叫属性值。说老师你这个是你的自己的这个主观意识吧,我又是这样认为的吗?是你比如说我们测试一下,在这儿我用差值语法呢,我读一个X,那你看现在啊,他报什么问题呢。
02:08
你看一下,他告诉你,他说有一个属性或者是一个方法叫X,没有定义对吧?那你看他说的属性是啥意思,就是指data里的数据是吧?那如果在你的代码当中,你在这写一个X,随便写个东西,同学你看马上就对了,那这就强有力的证明了,View认为data里边写的东西都是啥呀,属性,那如果你要不嫌麻烦,可以像刚才那么玩,你把X配置成一个方法对吧?然后X有返回值,然后你自己写X,再掉它,然后页面就有东西了。好了,这呢咱就不墨迹了,好了,回来把这X这儿呢给它删掉,写什么我们还不知道啊,属性你明白了,那接下来咱就聊聊计算属性吧,哎,那你注意了,我要给他下定义了,所谓的计算属性,就是拿着你已经写完的属性去加工,去计算,然后呢,生成一个全新的属性,这就是计算属性。
03:02
啊,你比如说同学,我这有姓,我这有名,那你说我是不是可以完全给它计算出来一个东西叫做full name是啥呀?全名,那这两个我们称之为属性,那这个full name我们就称之为计算出来的属性,简称计算属性,OK,老师,那明白了,写写吧,啊在这儿呢,我就补一个有姓有名嘛,是吧?哎,计算属性也是属性是吧?老师,哎,我就写在这个内幕里了啊,然后我在这呢,就噼里啪啦开始写了,同学,这不对啊,听我说一下,在view u当中呢,它呀是把属性和计算属性啊分开放,Data里面放的呢是属性,如果你想弄那个计算属性,你得需要一个全新的配置项,你直接写在data里面肯定是不可以的啊好了,给它删掉,那全新的配置项叫什么名字呢?来直接告诉大家啊,叫computed。这个词呢,本身就有计算的意思啊,你打开有道来,我复制一下,你打开有道呢,你去查询一下,走看computed,你看发音,Computed本身就有计算的意思,对吧?好,那它配置的方法呢,和这个date呀类似啊,你也得写成一个对象的形式,因为你想啊,同学date里的属性是很多很多的,那我计算属性的以后肯定也是很多的呀,所以说得写一个对象好了,接下来呢,就给你的这个计算属性起一个名字吧,有姓有名,那全名这词当然就是full name,然后同学就说老师,那我又明白了,诶就得这么写了,我把这章啊拿过来,把这三呢写在这儿,说老师这不就得了吗?那你看看这样的话会有什么问题啊,回来同学读。
04:38
他说有一个geter缺失了,在你的计算属性full name中,那就证明你这么写是不对的,不能直接把它写成一个字符串,没这写法啊,那怎么写呢?由我告诉你同学计算属性,计算属性它有可能这个计算呢会比较复杂,所以说呢,它要求你把计算的整个过程啊配置成一个对象,哎,对象,然后这个对象里面同学你得写一个get,老师你咋知道的呢?因为刚才他报错说了有一个get缺失了,同学如果你对我之前复习的那个DeFine property比较熟,你其实能猜到接下来我们要怎么做,而且你也能猜到这个get它应该有什么作用,是吧?那来,那咱就说说吧,同学这个get,哎有什么作用啊,那咱这说吧,叫做当啊有人读取full name时,然后呢,Get就会被。
05:39
调用,且返回值就作为full name的值,你体会体会这句话,只要有人读取forna了,你比如说有一天啊,有一个差值语法问了,哎,说你把那全名给我呗,好,这个时候get瞬间就被调用了,然后它的返回值就作为full name的值了,同学,我问你跟那个object property那个是不是那个规则是一模一样的呀,而且我告诉你它底层实用的就是property和好,那我们验证一下啊,怎么能知道这个get有没有被调用呢?我在这做一个conslo是不是可以?哎,只要这个调用了,我就输出这个get,或者是说的完整一点啊,叫做get被调用了,行吧,那我怎么能知道这个get的返回值就作为full name的值呢?诶,我在这写一个return可以吧,随便呢,咱们写一个名,不一定非得是在这写这张和三啊,咱随便写一个,咱们就是在做验证呢,是吧,小猪佩奇,好,写完了,那接下来呢,你读一下这个full name你看看。
06:39
控制台输不输出这个,你看看full name的值是不是小猪佩奇这事不就结了吗?对吧,但是现在很尴尬。你不会读这个phone name,你说是这意思不,各位?我现在让你读读姓,我让你读读名,你知道怎么读这个姓和名啊,同学其实都在谁身上呢?是不是在那个VM身上呢?那现在我让你读这个全名,同学你连他在哪都不知道,你怎么读他呀?哎,那我告诉你他在哪儿,他呀也在VM身上,说老师你说的对吗?验证一下来收到这个VM,好回到我们的这个控制台当中啊,我给你输出,走,同学注意看啊,重点来了,走。
07:19
有没有姓有这叫属性,哎,你亲自写在data里的有没有名,有这也叫属性,哎同学有没有for name有没有有,那这叫啥?这叫计算属性,但是我想问各位啊,你直接看这其实你是区分不出来谁是属性,谁是计算属性的,你说对不对?说老师那咋区分呢?你别急,一会儿我告诉你咋区分啊同学,有姓吧,有名吧,我问的是现在我读没读这个全名,我读了吗?没有,我鼠标放在这也不是读,我得点下去才叫读,你说对吗?哎,我不读,那控制台就没有那个输出,但是一旦你读了,看着啊点是不是小猪佩奇同学那个事儿是不是验证了它的返回值就作为full name的值是吗?来折叠起来get咋的是不被调用了。
08:04
哎,写到这儿呢,大家就应该有所体会了,是吧?啊舒老师好像知道了,这叫属性,这叫计算属性,还有一个细节上的问题啊,你需要注意同学,就是这个VM身上啊,有一个下划线date,大家还记得吧,下划线date是把谁收到了,各位是把date里边的东西收到了对吗?所以说你一定要注意啊VM就目前来说啊,VM_date里面有姓有名,但是你放心,绝对没有谁全名,因为全名是属于以后计算出来的东西。啊,不是说你当时就写在这个属性里的,那你看我们测试一下各位清掉VM,点下划线data,点看身上有没有first name有没有有,那同理,看看有没有这个last name有没有有,但是能有吗?不可能对吧?老师,那没有,那怎么用啊?诶各位,下划线date里面确实有姓,确实有名,下划线date里面没有全名不要紧,这个全名是拿着这俩东西经过一番计算,计算完了之后直接丢在谁身上,VM身上一定要把这理解好,各位啊,下划线date里的东西才是你真正所配置的属性,那这个叫计算属性,说老师那我怎么区分呢?其实你借助开发者工具啊,完全可以区分出来,你点击一下你瞧吗?各位,Data里边的这都叫啥属性?那红色框里的这个你看人写的多明白啊,各位。computed计算出来的谁?Full name是什么呀?小猪佩奇,OK,好嘞,那同学你都已经知道了,全。
09:36
名啊,这个full name啊,它还是出现在VM身上,那你说同学我这就知道怎么写了吧,是不是直接差值语法读这个for name就可以了,好了,回来这呢,你知道怎么写了,差值语法读谁full name是不是就可以了?回头看一下效果走是吧,诶小猪佩奇,但是咱们得升级一下啊,你不能写假的呀,小猪佩奇呀,对吧,各位你得写真正的呀,张然后杠,然后三对吧,你不能写这假的,那怎么办呀,来回到代码中,反正你不可能返回小猪佩奇了,那你返回啥呀?老师,我会不就是姓加上这个名吗?简单我就写完了呀,老师啊,那你看看效果吧,报错报什么错误呢?说这姓啊,它没有定义,为什么呀。
10:21
同学,你看看你的代码啊,你这个姓啊,是不是配置在date对象中的一个属性。那你在哪去用它呢?你在comp对象的full name对象里的get函数中去用它,你肯定看不见它呀,对吧?哎呀,说老师是啊,这怎么办呀,看不见了呀,那现在要能读到这个姓和名的这功能是不是就做完了呀,但是你看不见呀,那怎么办呀?哎,跟大家说一下,同学,你想看到姓,你想看到名,其实你借助VM是不是都能看见,那在这个里面,同学如果我要拿到VM,那是不是就可以了呀?说老师,那问题是我怎么拿到VM呢?诶跟大家说一下啊,这个get函数里的this view已经帮你维护好了。
11:02
当你去读取full name的时候,就会帮你去调这个get,并且view做了一个特别棒的事,把你get中的this指向给你调成了这个VM,哎,那我们去验证一下啊,各位在这儿呢,我先把它删掉,要不他报错呀,啊,我还先写那个小猪佩奇啊,然后在这儿呢,我给你输出那个this,我再来一行吧,啊,在这儿this,然后你瞧一下各位啊,回到这儿走,看谁是不是那VM,那VM都握在手里了,各位你想拿啥不能拿呀,对吧?好了,回来开始写这块呢,给它注掉,然后呢,写好一个注释,此处的this是谁呢?VM好,那这块呢,别小猪佩齐了呀,this.first name,然后加上一个杠,再加上this,点谁呢?Last name,这不就得了吗?回来看这张三,诶,张三,对吧?然后你看开发者工具里边呢,也是这么一个体现,这叫数据,这叫计算属性是吧,来吧,那开始各位。
12:03
说老师这不就写完了吗?那你等等,咱们还得研究另外一个问题啊,各位,就是get什么时候调用?说老师这还用说呀,你都已经说完了吗?只要有人读取这个full name,那get就被调用吗?哎,那同学我这么写,你看着啊,来琢磨琢磨,这都是细节上的问题啊,回车呢,也给你加上啊,走。好同学,要是按照刚才咱们那么说,就浅层次的理解啊,就是说有人读取for name get就会被调用,那我问你啊,我you去解析红色框里边模板的时候,我问各位读了几次forname,一次两次,三次,四次是不四次。那要是浅层次的分析,这个get得被掉几次掉几次,是不是得掉四次,但是实际上呢,你自己看啊,来刷新一波。同学,我四个张三是不是全体现出来了,但是get只被调了几次呢一次,所以说同学他这里边做了一个特别好的事儿,叫做缓存,啥意思呢?回到代码里,他执行到第14行这个模板的时候呀,他发现哎呦V有人读取for name了,于是乎呢去调用get,于是乎呢拿到返回值,于是乎呢就作为full name的值去使用,随后他做了一个缓存,剩下这三个地方在读取full name的时候,他不会再去找那个get要了,直接走缓存就可以了。我知道反应快的同学立刻就在这想起了一个问题,老师,那这缓存好像也不好吧,万一以后这东西我改了,那这fullname他不废了吗?对吧?以后读的还是缓存的值呢,实际上它已经变了呀,所以说同学这个get的调用啊,是有两个时机的,来我们说说啊,同学get什么时候调用?首先说第一个时候啊,非常有讲究啊,你看我是这么说的,叫做初次读取。
13:46
For时啥叫初次?就是第一次吗?以后再读那就不是了,哎,初次读取for时,Get会被调用,还有一个时机,这块你一定得理解好啊,这么说叫做所依赖的数据发生变化时,我先写,然后你体会着啊,所依赖的数据发生变化是说老师不懂这啥意思啊,同学,我问一下你计算这个全名的时候呀,你用到了谁?老师我用到了姓啊。
14:17
还用到了谁呢?老师,我用到了名,哎,那我告诉你啊,各位,以后一旦这个姓发生改变,Get重新调用,或者是这个名发生改变,Get呢,也重新调用,老师为啥这样呢?他为了给你一个最新的值,你说对吗?同学们想一想啊,如果呢,他像我刚才说的做了缓存,但是他不做这个事儿,那就很危险,大家想啊,他做了缓存一读啊,叫张三。然后以后呢,这个姓其实已经变了,不叫张三了,叫李三,那我问各位,如果他再不执行这么一个事儿,那你说是不是就意味着那full name读取出来的永远都是张三,你把姓和名都改出花来了,他这边是不是也不变呢?所以说同学你看人家的设计啥叫依赖的数据,就说的再直白点,各位你算这全名的时候,你都用谁了吧,老师我用姓了,还用谁用名了,那他俩就是被依赖的数据,你比如说我这儿啊,再给你写一个呗,我写一个X啊,然后X的值呢,比如说写一个叫做你好啊,然后我在这儿呢,我再给你来一个input框,哎,这写一个叫做测试。
15:20
然后在这儿呢,我也用双向数据绑定,绑定到这个X身上,哎,然后你看一下各位回到这个页面当中,我们测试一下啊同学你看接下来我改那个姓,我问一下姓是不是全名所依赖的数据是吧?那你看当姓改的时候,走get掉,再改再改再改,你只要改我就掉,而且那个名是不是也是他所依赖的呀,那你看我再改,走走走走走,只要你改他就重新调改的,但是这个人同学他不是全名所依赖的数据,你改出花来,你看get是不是也不被调用,所以说一定体会好这个事儿,什么叫做所依赖的数据发生变化对不。那同学其实聊到这儿啊,我们就已经发现了这个计算属性啊,有优势,和这个methods相比,同学methods就没有缓存,诶你看着啊,Methods在里面呢,我也是给你读取好多遍这个全名,你看一下效果啊,这换行呢,也给你加上走同学你看我读取了几次这个全名啊,是不是五次,那我告诉你啊,这个methods就得被几次,五次,不信你瞧就没有任何缓存而言,对不看这些次,但是我的计算属性你一刷新,你看只有一次,那这不就是优势吗?对吧,各位,哎,好了,回来,然后呢,初学者容易犯的一个错误在哪儿呢?在这儿你看着啊,写着写着吧,就懵了,听老师讲吧,都明白自己一动手链呢就容易这样,哎呀哎呀,我写了一个for name,哎呀forna,哎呦是个对象,哎呀对象里边有get,哎呀我得掉掉完了哎就有值了,然后就极其容易啊来我把这呢先给它注掉,我这会儿呢也给它注掉啊,给它注掉就留一行啊极其容易啊极其容易,怎么的呢,极其容易你就激动了,你就。
16:56
讲呀,Get,哎呀,好嘞,同学你这么写的后果你自己看full name.get is not a function,所以说这块啊,你一定要扭转过来,同学不是说你在comp里你写了个name,哎,是个对象,完了VM身上的full name就是对象,哎,完了对象里边有get,那我就能VM.full name.get不是的,各位。
17:18
这块你一定要理解好啊,同学,我给你做一个对比啊,你看我写一个methods methods,我写一个DEMO函数是吧,同学你听我说VM身上有啥。VM身上有这仨东西对不对,这叫啥属性,你写的是啥,它就是啥,你说姓张名3X你好,那你看VM身上来,那我当然了,得把这块呢给它改一下啊来找到这儿不能让他在点get了,好回到这我输出VM同学你就看。有姓吧,有名吧,有X吧,你这写的什么东西,那VM身上就是什么东西,还有谁呢?这个DEMO我问你DEMO写的是啥,是不是一个函数,那你看VM身上的DEMO是不是函数,是,所以说特点就是date中你写啥就是啥,这个methods中你写什么,那出现在VM身上的呀,也是什么,但是谁就不能这么理解了呢?各位,这个计算属性就不能这么理解了啊,不是说你写个fullna是对象,完了VM身上的full name也是对象,不不不,他往VM身上放的时候,它自动去找到get,它自动去调用get,拿到get的返回值,然后放在VM身上了,然后放的时候那个名字叫什么呀,叫full nameme,哎,这会儿你一定要扭转过来好不,各位,嗯,然后呢,还有一个小点啊各位,那你说既然能有get,那你说就也得有谁呀set,那你说set有什么作用呢?来把这个set的作用啊引出来,各位你说我这个full name终归是一个计算出来的新属性,那我要是只写。
18:48
的话,那我就只考虑了一个问题,就是full name被读取,我却没有考虑到full name被修改,你说对吗?各位,你要是不配置这个set,那你去改这个full name的时候,来大家看着啊,我给你改一下VM.full name是不是在这儿啊,我得改成什么呢?改成李四敲回车了啊,我要改了走报错,他说什么呢?Full name这个属性呢是存在的,但是has no set没有set,那你也能猜得到了,对吧?我这还得给他写一个啥呢set,同学你听我说啊,这个set呀,不是必须写的,如果你很确定说老师我算完那full name吧,它就是读取给别人用的,那这set你就别写了,但是如果说这个full以后会被人改,那你怎么办呀?你就得写这个set,好,那同学把这注释也写上吧,叫做set,什么时候调用,你说什么时候呀?只有一个时候叫做当full nameme被修改的时候啊,或者是被。
19:48
改吧,对吧,来验证一下,看看是不是那么回事,输出一下呢,这个set同学,如果你对你比较了解,你说set会不会收到参数,必须会收到啥参数,你把full name改成什么,那set收到的是不是就是什么呀,所以说一定会有一个value,好那我把这个value呢,诶给它复制放在这儿好了,咱们看一下啊,是不是这意思,把这儿呢清空一下。
20:14
VM.four name改成什么呢?我就不再敲了,就直接写这李四了啊回车,你看set是不是调用了你传入的值,是不是李杠四说老师,那这咋不变呢?这姓名啥的,这全名这咋这咋都还在这儿呢?各位啊,很简单呀,你想想回到这儿我给你捋顺一下,你刚才啊执行了哪段代码,这段代码VM点等于什么什么,你是不是把它改了,一旦你修改了,我问各位与之对应的什么就被调用set函数,那set函数被调用了,里边你干嘛了呢?里边你贼无聊,你做了一个输出就完事了,那同学我问一下,你有在set里边把姓改了吗?没有,那你有在set里边把名改了吗?没有,那这怎么变呢?对吧?Fullname就紧盯着这两个东西看,这两个东西只要不变,For name就是不变,那你也知道了,我这个里边应该干点事儿,对吧,别做这种无聊的输出啊,好了,那怎么办,同学,你传入的那个全名吧。
21:14
一定是这么一个形式,你比如说张三,他一定得是张杠三对吧,李四呢,他也一定得是李杠四,那这样的话,同学我们是不是就能知道哪个是姓哪个是名啊,之前呢,咱在线下去讲这个课的时候吧,然后有的同学跟我说,说老师那你这套路我呀,老师那你看你这姓和名之间,你非得加个杠啊,那你不加杠呢,那不就废了吗?同学咱得这说这姓名啊,如果中间不加杠,那咱们通过GS其实很难判断谁是那个这个姓谁是名,对吧,你就比如说咱开玩笑的时候,你说现在这名啊,你比如说什么尼古拉斯凯奇,你说哪个是姓,哪个是名这东西对吧?我说的这些如果是知名的,你知道,哎说老师什么这个,呃,迪丽热巴是吧,哎,这哪个是姓,哪个是名,但是我突然给你拿一个全名来说,同学,那你说你你能整明白哪个是姓哪个是名吗?是吧,那得借助大数据分析对吧?那在这儿呢,同学,我们为了掩饰问题方便,哎,所以说呢,我们中间加了一个杠,不是说套路,你是这个东西为了好掩饰,你明白不啊,那你说接下来怎么办?
22:13
我把张杠三给你了,我让你拎出来姓,我让你拎出来名,你说那怎么办呀?方法有很多啊,说一个简单的方式,同学把这字符串按照杠拆成一个数组,数组里的第零项是姓,第一项是名,对不对?好了,来给它删掉,咋写to AR对吧,等于,然后是这个value点是不是light呀,按照指定字符把一个字符串拆成一个数组嘛,那接下来你知道怎么办了,是不把那姓给它改一下,然后是不是再把那个名给它改一下?诶同学,S里的this我就不多说了,跟那个get里边是一样的,This点姓等于AR里边索引值为零的那个,那你说同理,这块是不是得写一个last name完了是不是一的那个,你这回不就可以了吗?来,回头看一下效果啊,点击一下开发者工具,张三,完了,你好,张杠三开始执行代码,在这儿VM点,然后是for name等于什么呢?李四看着我敲回车走,你看,姓变成了李,名变成了四,全名变成了李四,对吧,好描述。
23:18
一下整个过程来,同学刚才呀,你呢,执行了这么一段代码,For name等于什么什么,是不是改了呀,你这一改不要紧,兄弟,Full name对应的哪个方法就执行set set1执行set里边引起了谁的变化,性的变化,它是不是就变,它一变不要紧,我问你页面中用到姓的地方是不是就自动更新,还有一个地方,各位你别忘了,全名是不是依赖着姓和名算出来的,那既然你的姓发生变化了,那所以说紧随其后这个计算属性是不是也发生变化呀?哎,所以说你看同学这是一个连锁反应,有没有一种感觉,其实同学full name没有真正的值,你每次用啊,它都是现给你算的,对吧,而且他算过一次呢,还有缓存对不?各位那你想改这个东西,这个东西本身就是算出来的,同学,那你想把它真正的改掉,那你说你怎么办,就得把到底是谁算出来的,它那个东西是不是改掉啊,哎呀,同学咱其。
24:18
之前都写过这段代码,咱在讲数据代理给你铺垫这个事儿的时候,同学你看这说这人呢,得有年龄,年龄是多少呢?是一个number里的18,那你说当以后有人想改那个人的年龄的时候,你是不是得在set里边把那个number给它改掉了,这不都是同理的吗?对吧?各位好,那咱们就把这个计算属性呢,一个基本的使用呢,就给大家说完了,OK,然后这里边还有一个细节上的问题,各位就是在这儿的,你不能乱写,如果你把这个get或者是这个set,你给它写成箭头函数,同学完了你这个this呀,就再也不是咱们说的那个VM了,就是谁的呢window了,哎,那你看一眼啊,在这呢,我给你输出一下这个this,好了,回到这儿,然后呢,你刷新一下,同学,你看是不是window了,可千万不能这么写啊,一切呢,都得按照规矩去写,对吧?就写普通的就可以,咱说这个site也好,这个get也好,它们俩都是什么?被view所管理的函数,被view所管理的函数,你就不要把它写成箭头函数,就本着这个原则是不会出错的。好吧,来,我们整体总结一波啊,在这儿各位走总结性的东西拿过来读一读。
25:18
计算属性的定义是要用的属性不存在,要通过已有的属性是不是计算得来啊,还有这里边儿有很多细节的点啊,各位咱再说说这个,我说要通过什么,通过已有的属性对不对?各位,我可没说已有的数据,我可没说已有的变量,你知道不?我说的是已有的属性计算得来,你就比如说啊各位,我在这儿给你写一个变量,它叫做A,它的值是一。然后各位你瞧着啊,我算这个全名的时候呀,我不仅是姓加名,哎,我还得加那A,同学其实按照那个作用欲的查找,它一层一层找,一定能找到这A对吧?所以说你看页面的效果就是张三一对不好,那同学我问你现在这个A要改,我给它改成九,我没敲回车的,你告诉我页面变不变,页面绝对不变,走,我知道你把那A改成九了,但是页面不变,为啥?因为你这数据不是一个合理的数据,你这个A是属于同学,你看看完全脱离了view的管理,那你这个A呢,就再也没有人能监测到它的改变了,知道不?哎,所以说同学一定要体会好这句话啊,来把这块删掉,哪句话呢?第一句通过已有的属性,不能是已有的随便一个变量是吧?再读第二句,原理底层就是借助了object DeFine property方法提供的get和啊,然后呢,Get什么时候执行,初次读取会执行一次,以后再读就不调用了,因为有缓存。再读第二句,当依赖的数据发生改变的时候,会被。
26:48
调用好了,优势呢,与methods实现相比啊,内部有缓存机制,能够实现一个复用的效果,效率更高,而且最主要的各位调试也更加方便,为啥说方便呢?你看我用methods去实现打开是吧,也有姓也有名,我这一改,诶我这一改是不是也有效果呀,右键检查,但是你借助开发者工具,你能够观察出来的只有最原始的数据,对不?你像这个东西到底是怎么算的啊,不体现在这儿是不是你也看不看不出来,但是如果说你用的是这个计算属性,那你各位再体会一下啊,打开。
27:21
啊,我这输入张123,这呢输入456也有一个联动的效果,并且呢,你看在这儿我能观察出来一个非常友好的这么一个诶情况,你看哎,是不是有这个属性,是不是有计算属性,哎,好了,来再往下读同学,那么备注就是计算属性最终会出现在VM身上,直接读取使用即可。我写这第19行的意思就是告诉你,千万不要一激动给我来了一个点get明白不好了,这块删掉,直接读取,啥叫直接读取,这就是直接读取好,再读第二句,如果计算属性要被修改,那么必须得写啥set函数不写咋的报错去响应这个修改对不对?再往后读同学,且set中要引起计算时所依赖的数据发生变化,那也就是说在set当中,你一定得真正的去把这个姓给这个名改了,然后呢,全名才会改,对不好同学,那这个呢,就是计算属性的一个基本使用啊,一定要注意这里边儿一些细节上的问题,好吧,那这小节呢,我们听。
我来说两句