00:00
这节课我们来看一下如何解决,哎,这个类的方法中的类似指向的一个问题,我们来复制一个。三啊。解决。方法中啊,累。方法中,This指向。问题啊啊。这个问题啊,其实。非常简单,我只要通过一行代码就可以了。我先写出来,哎,大家看一下,就是我在构造。方法里面写一个this,第二。Change whether,哎,我让它等于谁呢?就是说把this.change whether,哎这个方法使用半的方法。哎,把历史传过来。我把它的一个执行的一个结果给到啊,这个啊,我们来先看看效果,等会我再来解释这行代码啊。
01:06
来在这里啊,因为是新开的一个文件,那么我们重新打开一下。点一下啊。可以看到啊,输出了这个weather的这个实例,哎,这个时候。啊,这个this就能指向这个whether的这个实例了,哎,我们把这个注视点作为一个对比来看一下啊。此时再去刷新点击,就是安迪find了。好,那我们把这个打开,我们来说一下这个代码啊,不要看着它长就感觉很闷,我们一要来看,首先这是一个等号,等号是不是一个复值语句,对不对,我们也就是说把这个值付给谁,付给this this是谁,This是这个whether的16项是吧,我们把这个。啊,这边的结果,哎,复制给this,就是实例对象的这个change whether这个属性是不是好,来接着我们来看这边做了什么啊这边哎。
02:01
调这个this this是谁?这个我们weather是对象,他的这个change weatherr对吧,那代码是怎么执行,从那边先执行对不对,这时候,哎,我们这个呃,Change weatherr它会去哪去寻找氢斜whether在哪?是不是在这个类的圆形上,就是我们这里,它就会去类的圆型上去找这个氢气的外方法,哎,接着我们使用了很关键的一个函数,半函数,哎半函数这个呃,之前大家应该学过啊,它呢。可以去,哎,生成一个新的函数,哎,如果我们传的这个参数,它会改变这个我们新生成的这个函数的类似的一个指向,就是我们给什么Z就指向什么。清楚了吧,那我们给的是谁?给的是这个Y的实例,哎,也就是说,所以说这个最终新生成的这个函数,它的这个类就指向了whether实例。清楚了吧,我们把这个新生成的这个函数,哎,里面的this已经指向了这个Y实例,把这个结果给到了谁?给到了this change,哎,给到了这个实力上面的氢级发。好。
03:00
嗯,那我们来看一下这个this啊。刷新来点击看一下这个this输出的是whether这个实例,对不对,Whether的实例是不是有个清理外的方法啊,也就是我们这一行代码的一个作用。对不对啊,把它的这个结果给到了this清理whether啊,那我们在点击的时候呢,就会去找到this这个这个实例上面的这个清理外啊,那我们接着来看一看啊这里,哎,这个实力本身它有一个氢外热那类的这个圆线呢,它也有一个氢理外。那你说这个点击的时候,他执行哪个清体班长,肯定是优先执行这个实例本身的清体班长,如果他已经在这儿找到了清体班长这个方法的话,他就不继续上圆形里面去继续找了。明白了吧?啊,好。这个就是这行代码的一个作用,哎,我们通过这个B,呃,生成一个新的一个方法,然后啊,通过传入参数改变这个新生成方法的类的一个指向,哎,我们传什么this就指向什么。
04:01
啊,我们传的是这个Y的这个实例是吧,所以我们把this就改成了这个V的这个实例,最后我们把这个新生成的这个函数给到这个实例的清V这个方法啊,或者说这个属性,哎,最后我们再点击昂可雷的时候,直接可以在这个实例的这个本身就找到了这个方法。啊,所以这个this也是我们修改后的一个this,就能获取到这个this,好,如果这个band忘掉的话,我们来先写一个文件啊。来新建一个这个。DEMOA开面。在这里script我们写一个函数啊DEMO啊,DEMO里面我们输出谁输出这个this,好来看一下这个this是什么。打开我们调试工具来刷新一下。啊,没有调用这个函数啊。来,再来看一下。
05:01
是不是window对不对,我们这个函数因为没有开启像模式,它类似指向这个window对象,对吧?好,接着我来干什么事呢?呃,DEMO点半,哎,我去修改,哎,使用半的方法去修改它的这个this的一个指向,比如把这个list改成谁,改成A2,好那接下来我们来看一下有没有变化啊,没有变化是不是为什么?哎,因为这个半的啊,就是我们调完这个半的函数之后,它是有一个返回值的,它新生成了一个新的一个函数嘛,对不对,这个新的这个函数就是它的反回值,并且是这个Z的指向改了之后的一个啊这个反回值好,那所以我们需要一个变量来接收,哎,X等于。DEMO来,我们同时传入这个参数,修改一下新生成的函数的this一个指向,接下来我们来调用这个X,我们看看它的this指向了什么啊?来刷新一下啊,好好,第一个是我们直接调用DEMO,它的这个Z指向window对不对?第二个是我们通过这个半函数之后传了一个呃,就是改变了它的Z次指向,得到这个新的函数,然后给到X,我们用X再调用函数,是不是就this就变成了它。
06:10
哎,通过这么一个例子,让大家再复习一下这个band的这个一个作用,哎,大家这个看明白之后,我们再来看这里你就明白什么意思了,对不对?我们首先从类的原型上获取到这个清理Y,哎这个方法之后呢,使用半哎,然后新生成一个这个方法,那新生成这个函数的时候呢,我们同时传入这个this啊,改变这个this子项,哎,这里我们传的是这个whether这个实例,哎,就把这个this原来是安范的就给它改成了,哎,就能指向我们这个whether这个实例,最后我们把这个新生的函数给到,啊,这个this是Y的这个实例,给到这个实例的这个亲体外绕这个属性。哎,那我们在点击uncle click的时候,就可以直接在属性上面,哎,这个实例的属性上面去找到这个清理班长,哎,这个方法就不用继续向原型里面去找了。好,就通过这么一行代码去改变了,哎,我们这个类似的指向,接下来Z似的指向解决了之后,哎,我们就可以。
07:04
去哎,从this里面去获取到这个space啊,获取一个号去修改它的值,就可以完成这个例子了啊,这个我们放到下节课去说啊,这个DEMO的话,这个是啊复习的一个代码,我就把它删掉了啊。
我来说两句