00:00
我继续啊,说一个说一个东西啊,来一个这个11叫做一个this z是什么意思,这个是吧,哎,这那这这个什么玩意儿呢?这个Z我们来说一下,我这调一个这个方式,我叫一个这个F,因为这是一个函数,然后F因为我这时候在。调用这个函数吧,哎,调用这个函数,那这里边我们要说一个什么东西呢?来我再改过来,边改边看,我们来说一下啊,说一下这个东西,我们这个浏览器,或者说我们这个解析器啊,我们解解析器就是浏览器啊,解析器在什么呢?在调用我们这个函数时。注意了,现在我们这函数是不是我们自己调的呀,要注意我们在调这个函数时,它都为什么呢?每次都会向我们这个什么呢?向我们这个函数内部传递进什么呢?传递进一个这个隐含的参数啊,传递进一个隐含参数,那现在我这块我有没有定义参数啊,没有,比如说我是定义一个A,然后这个逗号来一个B,然后呢,我这cancel.log一个这个诶来一个A,等于我是加上一个A,然后我再加上一个这个B,等于我再加上一个B,我来输出一下两只,这两只我没传,是不是都应该是安你犯的呀,来来,我传一个123,然后一个456,我一保存是不是123456啊,你要注意了,这个123和456这是什么呀。
01:35
这是咱们传的吧,诶这是咱们传的,不是我们这个浏览器传的,那我们说了,咱们传不用管啊,咱们说谁呀,浏览器他干嘛呀,他每次都会传递进一个隐含参数,就是说它是不是像咱们这样传的呀,不是它干嘛的呀,它悄悄的传进来的,没让咱们看见啊,没让咱们看见,那我们说什么呢?这个隐含参数叫什么呢?诶这个隐含的这个参数就是什么呢?就是这啊就是这注意了这个东西浏览器每次都会传啊,每次都会传,那既然传了,我们来看看有没有啊,直接我这输出一个。
02:13
Cancel点一个log,我给来一个this,我看看有没有啊,有没有来我这一保存走你诶是不是确实有啊,是谁呀?Object的window是不是我们这个全局对象window啊,诶window那很多同学说了,那window你就直接来个window完了干嘛非得叫叫this呀,叫this我们来说一下这个this什么意思啊,你这个隐含参数就是什么呢?ZZ干嘛呢?首先你要注意Z实际上是一个什么呀?是个参数,跟我们这个AB干嘛呢没区别,只不过它是谁传进来的,浏览器传进来的啊浏览器传进来的我们直接拿过来什么呀?用就完事了啊用就完事了。Z是什么呢?诶Z指向的是什么呢?指向的是一个这个对象啊,一个对象,这个对象什么呢?诶这个对象我们称为什么呢?我们称为叫做函数执行的这个什么呀,叫做一个上下文对象啊,上下文对象那注意了诶。
03:14
那是不是说这个对象一直都是window啊,诶不是,如果它一直都是window,那我们这个东西就没有意义了,那你不如直接写window了,对吧?我们说什么呢?诶我们来说一下根据什么呢?根据我们这个函数的这个调用方式的什么呀,不同我们这个Z会什么呢?会指向什么呀,不同的这个对象啊,不同的对象来,那咱们现在来看啊,这里边我现在一个方参数我都不要了,就光调一个方,现在这里边这是一个什么呀?是一个window对吧,是个window来咱们看啊,我换一种方式来一个创建一个对象,创建一个对象直接来一个挖一个obj,等于一个大块来什么呢?来一个这个name,然后冒号来什么呢?叫做孙悟空,然后呢,我这儿来一个这个其他都不写了,来一什么呢?来一个这个方法叫做一个C。
04:14
Name c name,那它等于谁呢?那它等于的是我们这个f fun,诶这块不用写这符号了啊,这能看懂吗?C name等于f fun干嘛呢?我是把obj的一个属性设置成一个什么呀函数,也就是说我现在来看我问你了OBj.c name和什么呢?和我们这个f fun,它现在是不是一个东西,是一个东西吧?哎,我是不是直接让他去等于它了呀?诶所以这块你要注意,我们来看看直接来什么呢?来一个cancel,点一个log OB接点c name等等于f fun这两个嘛呀。易保存是触吧,哎,是一样的啊,是一样的,来我们来看一下,这回又来什么呢?OB接点c name,我用OB接点C内调用的是不是还是这个FU啊,哎,那我们来看了,那这回还是不是混动了。
05:09
还是不是window了呢,我这一保存走你什么玩意儿,哎,是不是object呀,哎,Object,诶这怎么变了,刚才我这么调的时候来一个来个什么呢?F因那你先注意,首先你要肯定的是我这么调和这么调调的是什么呀,同一个函数吧,哎,同一个函数,但是你发现什么呢?它的结果干嘛了呀,不同了,上边这种方式调的打印的是一个object,下边这种方式打印的是一个window window们知道那这object是谁呀。为了能看出来我们干嘛呢,在我们的外部浏览器来运行一下,现在我只用它一个OBGC,我这一运行CTRL。来F12看看我们这个控制台,我这一刷新走你诶是谁呀。
06:02
是孙悟空吧,诶是孙悟空这个对象,也就是说我这儿打印的这个object实际上就是谁呀,是不是就是我这个。Obj呀,哎,就是我的这个obj啊obj,而我调f fun的时候呢,打印的是谁啊,是不是我们这个window啊,哎,Window那这块我们来说一下这个什么呢?根据函数调用的方式不同,这次会指向什么呀,不同的对象,注意我们这说的是调用方式,跟它的创建方式有没有关系。没有关系啊,主要说的是调用方式,我们来先说第一种,第一种叫什么呢?来我看这种叫什么呀?叫调什么呀?是不是调函数啊,哎,调函数,所以我们来说第一种叫什么呢?以我们这个函数的形式调用时,我们这个this是谁呢?This永远都是window啊,以函数的形式调用时,This永远都是window,而我这个是不是要以函数性调用啊,哎,以函数性调用,那我们来说,那上边这种呢,是不是方法的形式啊,所以我们来说第二种叫做什么呢?以方法的这个形式调用时,这次是谁呢?这次就是调用方法的那个对项,说白了这个方法是谁调的,我是不是这次就是谁呀?你来看我这个方法谁调的呀,Obj掉的吧,所以我这里边这次就是。
07:35
不是obj来我再换一个来什么呢?来一个OBJ2OBJ等于个这个什么呀,沙和尚现在我一保存,那我们现在来看,我是现在这是obj obj掉了吧,我一保存咱们来看这一刷新是不是孙悟空啊好,我这换一个,换一个谁呢?OBJ21保存这儿看不出来啊,这看不出来上我们后湖里看一刷新是变成沙和尚了或者这样,我不我不这个打印这个什么了,这了我打印什么呢?z.name诶z.name我们来看obj2.funz是不是应该就是OBG2啊,所以就应该相当于什么呀,OBJ2点内吧,一保存谁呀?沙和尚来我这来一什么呢?来一个OBj.C那是不是相当于这个obj点内呀,我一保存是不是就是我们这个孙悟空啊,所以注意这次是不是固定不变的。
08:30
不是,它是根据调用方式不同什么呀?哎,对象就不同啊,以函数形式调用this就是什么呀,Window,所以我这来一什么呢?挖一个name,等于我们这是全局的内全局的那个name属性,那我们来看我这调一个f fun,这叫以什么形式调用,是不是以函数性调用啊,诶以函数形式调用我们这个Z是谁啊,Z是window,所以我在这里边打印this.name是不是就相当于window.name呀,那我问你了,window.name是谁呀?是这个呀,所以你这一定要一保存是什么呀,全局的name属性啊,全局name属性,那我来来什么呢?来一个OB接点c name这叫什么呀?以方法的这个形式调用,这是谁呢?This是我们调用方法的这个对象。
09:31
所以对于这种调用方式来说,Z是不是就是obj呀,所以我打印z.name是不是就相当于obj.name呀,Obj的name是谁呀?孙悟空,所以你这一保存走,你是不是也是孙悟空啊,哎,也是孙悟空啊,哎,那再来看我来什么呢?obj2.c内,那这个Z是谁呀?是不是就是OBJ2啊,诶我这一打印应该就是谁了,是沙和上来,所以注意啊,Z这个参数是一个什么呀?是一个会变的,根据你调用形式的不同,它指向那个对象也不同,以函数的形式调用时,This是window啊,以方法形式调用时,谁调用Z就是谁,这个是谁呀,是我们这个浏览器给咱们传过来的啊,传过来这个呢,方便我们去动态的去使用一下,但是注意了,我这虽然说了两条,其实这两条是干嘛呀,是一个,为什么是一个呀,我们说了以函数形式调用,比如说我这这掉了一个M。
10:31
Fun,那实际上就相当于什么呀,是不是window.f fun啊,所以是一个,因为E函数呢,就是调用window的这个啊方法啊,Window的方法,所以这两条是一条啊,要记住了啊,一定注意我们这个Z是什么,Z是我们函数执行的一个叫什么呀,上下文的一个对象,它的决定什么呀,它是浏览器传过来的,它是谁根据调用方式的不同来决定啊一定要记住,先记住这两条,以后我们还有还有还有其他的情况啊,还有其他情况好,那这块呢,是我们说的这么一个this。
我来说两句