00:03
好,我们现在开始先,还是。照旧啊,把前面讲的东西复习一下。呃,首先呢,我要找一个同学来说一下我们上一次课讲的哪两个大的点啊。胡洁。原型和什么?执行上下文,嗯,可以了。所以我们第一个讲的实际上是圆形与圆形面这样两个概念,它们是连在一起的,再一个呢,就是执行上下文与执行上下文的什么这啊,那我再找个同学问一下站的结构用一句话怎么说?
01:10
姚斌。干啥呢?用站的结构,用一句话怎么说它的特点?后进,嗯,对啊,后进先出啊,对很好。啊行,那下面我们就一来看啊,圆形和圆形链这这样一个东西,首先呢,有这样一个属性叫什么,我们经常操作的一个属性和碳。好,现在我问它是谁的属性,或者说谁具有这个属性呢?是不是函数对象啊,为什么说是函数对象。对吧,首先肯定是函数身上是不是才有这个属性,接着我们平常用的时候是函数名点了,那一旦用函数名点的时候,大家想我现在是将函数作为函数看呢,还是作为对象看,是不是作为对象看。
02:18
但是我如果这个对象不是函数对象,它有这个属性吗?有没有没有,譬如说我一个object object有这个属性吗?6OBJECT产生的对象没有对吧?因为它不是一个什么函数对象。那object有没有?Object有没有?Object本身它不就是函数对象吗?对不对,它就是一个函数对象,所以我们平常说所有的函数都有什么属性。什么显示原型属性?就是protect属性对吧,好,这个搞清楚了。
03:03
那这是一个什么样的属性呢?是吧,它是不是个引用变量属性,有没有懂引用变量属性说明什么,说明它指向的是一个什么东西,是不是个对象啊。能不能理解啊,指向的这个对象,而指向的那个对象,我们把它称为什么对象?他所指向的那对象,我们称为什么对象?是不是圆形对象?对吧,啊,圆形对象啊。OK,这些概念大家应该能够说的比较准确才行。啊OK,好,还有一些,其实这里面还有一些是这实际上是那个结构啊,说的是所有的函数,这个函数名是不是就叫太可以吧,叫这个名字没问题吧,没有问题啊,它有一个内部的属性,指向的就是什么。
04:00
是不是我这个type所对应的什么圆形对象,而圆形对象身上有一个什么constructor指向的是这个什么?是不是它所对应的构造这个串什么意思?构造系的意思也是构造函数呗。能不懂啊,要能看得懂啊。OK啊,这个里面啊,还有一些需要去做知道的一些东西,什么东西呢?就是我们要知道这个属性。是什么时候被添加到函数上面去的?函数创建的时候,那什么时候创建函数对象呢?什么时候创建函数对象?其实很简单,定义函数的时候吗?那么你你定函数正在运行,大家看到啊,有两个。一个叫执行函数定义。
05:04
记住了啊,执行函数定义一个叫啊,一个叫执行函数一样吗。你说函数定义要不要执行?我定义一个,比如说我我写一个方形。RF。这条这这实际上本质上是不是一个表达式啊,这个表达式要不要执行,本身来说它也是需要去运行的呀,你不要解释执行吗?也就是说代码在没有运行之前,我的对象产生了吗。是没有,譬如说我举个例子,我握了一个负啊,握了一负等于一个方形嘛,你说这个方形是在它所对应的对象什么时候产生的?是不是这个语句执行的时候才会产生,这里面有个概念叫执行函数定义。再一个叫执行函数,执行函数是不是函数叫括号啊,我执行函数定义的时候,函数体执行没有,这个很关键,执行函数定义的时候,也就定义函数的时候,我们平常不说的就是定义函数嘛,你定义函数实际上就执行的是函数定义,它此时函数体并没有执行。
06:23
对不对,只是创建了一个什么函数对象。能理解吧,而我们真正通过函数名括号的时候,是不是执行那个函数对象。那么能理解,因为函数对象实际上是包含了很多语句啊。我们说函数是个特别的对象啊,特别在哪呀?它是不是可以执行,可以执行的原因是不是它内部包含的是代码呀,所说的代码不就是语句吗?对不对对的啊,这个就能区别开来啊,因为这个呢,后面我们会用到这个点。
07:06
啊,一个叫执行函数定义,也就是平常我们说的定义函数。定义函数的时候,函数体并没有执行,只是创建了函数对象。嗯。我已经跟他说了你至少两遍了,为什么说多遍?是因为这个东西很重要啊。啊,这个要知道,那也就是说我们定义执行函数定义,也就定义函数的时候,是本身是不是创建函数对象,那创建函数对象它内部,它的内部是不是要做个什么事情啊。做什么事?定义函数的时候,它创建函数对象的时候,内部要做个什么事,针对于我们这个要做个什么事,他要写一条语句,还记得那些语句怎么写的。它内部要写一条语句,你想想看嘛,这个属性不能平白无故的多出来呀,它肯定是执行的什么语句,最终是不是添加的执行的一条语句叫this.pro我就写个简单的啊,等于。
08:21
对不对,对吗?是不是创建了一个空的,我们这个对象有没有看懂啊,实际上本质上就进行这语句,这个历史是谁。Z是谁啊?函数对象嘛,刚才不创建六那个函数嘛,是不是创建的函数对象吗?我现在说的是在创建函数对象的内部,那个日不就是函数对象吗?能不懂啊,应该懂啊,在函数对象内部会执行的语句去添加,给函数对象添加一个属性,属性名叫什么?普派属性值为多少,是不是一个大的,一个就是一个空的,我这个对象一个大括号。
09:14
大话不就碰到这个对象吗?等着吧,嗯,行。啊,而这个对象我们也就是我们的什么对象,圆形对象。还有我们应该看到啊贝,它是不是一个函数,是不是是那它的原型对象上面是。有东西吗?有,有的原因是什么?他为他其实贝塔的元素对象上面有很多东西,有很多方法。啊,他为什么会有那么多方法呢?
10:00
对吧,我们刚刚不说了吗?说一个函数定义了以后,一个函数定义了,定义的时候还定义函数的时候,它开始指向的这个对象是不是一个空的这个对象,那为什么会有了呢。因为后来加的呀,我不给大家看过那个看过东西吗。我实际上我是给大家看过了啊,OK,再给大家看一遍,加深一下印象。啊,开始是这样的,那也就是说我执行这条与执行这个函数定义。圆形对象产生没有。就是我到了啊配就执行这这这里代码,我到200行的时候。Date所对应的原型对象产生没有?产生了是一个什么样的对象?Corner of这个对象,但是它后面不有这么多语句吗?看到了吗?那这些语句会产生一个什么样的结果?是不是在圆形对象上面是不是添加了很多很多的方法?
11:10
如果他没有这条语,没有这些语句,那它的原型对象是不是也是一个没有什么数据的一个对象。能不能理解?呃,这是它后面添加的,这个要搞清楚啊。OK,这个要看一下下面啊,下面我们要说的另外一个,实际上这个圆形我们是不是称为显示圆形呢?但是我们说还有一个什么影视圆形,那影视圆形是谁有影视圆形属性呢?实例对象就拥有影视圆形属性。那实例对象又分为两类?又分为两类,哪两类?一类是函数。
12:01
函数是不是实力对象是,但是函数这个实力量比较特别是吧,它是不是同时又又又有显示圆形呢?但一般的下面一个我们平常说的实力对象可不止函数,一般时候我们说实力对象一般不是指的函数能理解吧,但我们说函数是不是实例对象,是啊,是实例对象,但是我们一般情况下再跟他证明一遍,强调一遍啊。在我们平常说的时候,我们说创建一个实例对象,那肯定不是指定一个函数。能不能懂啊OK,我们有时候把函数称为什么呢?类型对象,为什么称到类型对象,你想啊,我这个函数肯定是个构函数是吧,我们第一个po是不是有可能。这个破损思路的类型的。能理解不?我们一般说十个下指的是六。Person产生的,也就六勾的函数产生的对象。
13:03
能不能理解?能吧,这个实例啊,指的就是谁的实力,是不是类型的实例啊,但是严格意义上来说,我们的函数它也是一个实例,它谁的实例对大写方写的实例。啊,这个辩证的表达,大家一定要能够记非常清楚。好,下面就要说实例对象的显示原型跟函数的啊,实例对象隐示原型与函数的显示原型它有没有什么关系?不能说指向是相等对不对,他们或者说他们指向同一个对象。这实际上是不是两个属性?说白了属性不就是变量吗?能不能懂这两个属性变量都是引用变量吗?
14:02
那引用变量是不是用来指向对象的,而他们指向同一个对象?好,那怎么样才说明才能是它们指向的是同一个对象呢?怎么样才能让他们指向同一个对象?对吧,那也就是说现在我就问一个了,影视圆形属性是什么时候产生的,也就这个属性。是不是创六实例的时候产生的,因为你要知道这个不在实例对象是什么是吧?也就是说我们创建实例对象内部,它会执行一条语句。对不对,那个语句怎么写的。Z点塔等于。我们的函数名,我用的时候是不指定有个函数名呢,好,假设那个函数名叫放放点什么。
15:03
试一试吧,啊,不要看好这条语句,你说你只要真的明白了,我们创建函数对象内部执行那条什么语句,我创建实例对象里面又执行了什么语句,你只要把这两个语句给它搞明白了,他们之间的关系就很清楚了。我们现在赋值实际上是不是将pro time属性的值,它里面这个内存的值,它是不是该内存啊,这个内存里面是不是存在一个地址,把这个内存里面存的这个地址。复制给谁?那他们俩就指向什么同一个对象了,那也就是说怎样让两个引用变量,两个引用变量都指向同一个对象呢?其实非常简单,将一个引用变量赋值给什么另一个引用变量。
16:00
是不是就可以将一个引用变量复制给另外一个引用变量就OK了?能明白吧,嗯,能。这个呢,其实难度并不大,而且我们后面呢,给大家画了这样一个图啊,这个图其实就在说明我们刚才说的这样一个道理啊。那你要知道,你说显示圆形属性和乙是先原属性,谁先产生显示圆形属性,你首先你得有故障函数吗。是吧,你有了函数以后,才能根据函数去六出来什么,是不是实力啊。啊,而他们俩共同指向的是要叫一个什么空的对象和为空的OB接口对象。没有我们的什么数据对不对,我们没有往里面加数据,默认是没加的吧,比如说这个不加吗?这是为什么后来加的吧,我说的是D函数的时候,它是不是一个空的,但它是真正是空的吗?真的是什么都没有吗?不是。
17:15
我们说所有的神力的象身上是不是都有一个属性叫什么pro隐视圆形属性,其实还有一个属性construct,大家应该看到了,Construct。就实例对象,现在有有一个construct,这用来干嘛的呀,它指向谁,有看什么意思,构造系嘛,你想想看我一个实例,我得知道我的构造系是谁吧,说白了就是我的,我对应的那个构的函数是谁。能不能连啊,其实这个默认就有,但是呢,我们说空的,我们这个对象指的是啊,没有我们的数据。我反复跟大家强调这个概念啊,大家应该清楚。
18:03
啊行,那后面呢,我们去讲另外东西就是圆形念啊,其实这个好懂啊,圆形六这个概念好懂,OK,那要说到圆形链呢,其实我们首先要说到圆形链又能干嘛。查找什么,什么属性,谁的属性。就是对象的属性呢,能不懂查找对实力或者准确的说叫实力对象的属性,那我们说言行念实际上是个什么?念是谁组成念寅是圆形所指向念,来看一下我们这里面有没有圆形链。我们这个圆形的指给谁看呢?实际上是这里是不是有个对象。对吧,它有一个影视圆形属性,是不是指向它的圆形对象是吧,而它上面是不是又有一个影视圆形属性。
19:05
指向是他的上一级。对不对?而圆形面的尽头是谁?是object的原型对象,不是object,是object object的原型对象。为什么他是镜头?因为它的影视圆形属性,为什么那其实这里少画了一个啊,能看出来吗?就是这一个原因,该是应该在这里画一个什么呢?是OB的构造函数是吧?可以画object啊,它里面有个什么属性,是不是pro对吧,是不是指向它。这意思吧,啊,我们当时是画的啊,OK,这个要搞定,其实还有很多可以画的,譬如说你此时大写方面存存在。存不存在是存在的,只是我们现在不适于研究它,能理解吧,OK?
20:08
这个结构其实就是看到了我们的一个什么呢?圆形面的结构。OK,圆形链的作用非常简单,用来去帮助我们什么查找对象的什么属性,那我去调用对象方法用不用圆形面用不用我调用一个OB接。点past。此时会不会去查看圆心链为,因为我去调用方法,首先是不是要根据这个属性名找到这个属性。能力也好。而且必须这个属性名所对应的值要是一个什么函数,是不是才能执行?
21:04
那反过来说了,我们给对象OB接点text等于一个X的差,此时会去看圆形链吗?会不会,不会我们说过了圆形链用来干嘛的,查找对象属性值的对不对?而我现在是去查找对象属性吗?我是是给对象属性设置值。对吧,能不能理解,这不是去查找的,所以说他不会看什么圆形面啊,搞清楚这个就很简单了,没什么难度。还有一个事情大家知道找不到会怎么样?找不到他,为什么啊,你犯啊,这个很关键,因为这个是经常在笔试的时候问考到一个题。因为我们有两条,一种是查找对象属性,一种查找变量。
22:05
对吧?查找变量找不到会怎么样报错?能不能理解,我要去输出一个变量啊,那个变量要没有它就爆破,我要去输一个对象身上的属性。他就是。那也就是说一个是一个实际上是圆心电的条,一个是什么,那个找是沿着什么找的坐浴列,对吧,能不能理解。啊,这个大家应该要清楚啊。啊。这是我们说的圆形链,那后面呢,会有很多的一些一些结构啊,有很多一些结构,我就不再去一个一个看,我看大家基本上都画了啊,而且问了一下大家基本上都懂了。好,还要知道啊,大家应该应该是前面应该知道,就GS的继承是基于什么,是不是原型的继承呢?能不能理解基于原型的圆形实际上本质上是不是对象,那也就是说有的时候就会说GS是基于对象的计算。
23:15
但是其他的语言,譬如说有的人估计不知道大家有没有人学过Java啊,如果你学过别的面向对象的语言,你就知道他们都是基于类的技术。和我们的GS不太一样。它是基于对象的计算。啊,我们会后面会说这些概念啊,不用记啊,这是说的是原形念,那后面呢,我们去花了不少时间去探索essential essential是如何判断的。对,首先你得知道怎么用,是不是它一般是A什么BA应该是个什么实例对象,而BA应该是个什么构造函数。
24:07
对吧,而函数身上有一个什么属性和他属性对不对,而我们的实力对象身上是不是有一个隐视圆心链。是吧,我我们实力对象是不是有一个隐视圆形链,这个影视圆形链有长有短,可能就几个,可能N多个,对不对。能不能理解,那只要我的B,它的显示圆形属性所指向的对象是其中的某一个就可以。能不懂这一个判断的结果就是错。能理解吗?你想想吧,这个A和这个因三的判断是我这个A是不是B这个类型的实例。整理解吧,啊是这个币类型的本质上判断,就是我刚才说的这样一种策略。
25:04
就是我BA的和type属性指向的圆形链上的某一个原型对象,也就是说我的A是不是有可能有应该有好几个原型对象。能不能理解,也就是说我们A只有它是圆形对象吗?不是它的圆形,圆形是不是也是圆形的量,说白了,我在这个上面如果有一个有一个T方法,我的我的A能不能看见能。那就说明它也是圆形对象。那还再跟大家强调一遍啊。一个实例对象的原型对象只有一个吗?不是,是不是可能有多个,能不能理解,要能理解啊,一个实例对象的原型对象很有可能有多个。
26:01
那。啊,这个大家应该要清楚,和那个对一下,它的顶部是默认是谁的原型,不是object。能不能理解不是我,我是函数对吧,是我什么圆形。啊,这个要把就。这就是为什么我们所有六出的对象,无论六谁产生的对象,它都有什么出是运方。能懂吗?你说我的一个一个方形F有没有。F方形FF能有没有图示方法有没有,为什么有?因为F它们也是六出来的吗?它的最顶端也是所也是我们的那个OB Jack的圆形对象,能理解吧?
27:06
因为我们说过了,一个函数,本质上它也是个使命对象。是不是只是我们平常,平常我们只看一个函数的显示原型。对不对,平常我们是不是只关注这一点,但是我们要知道函数上面有没有隐私,圆形属性有没有有。我们说过了,所有实例对象都有嘛,是吧,那你的F是不是个实例对象,本质上是不是也是也是啊。这些大家应该要去搞懂,而且这里面的这个结构图呢,我也我也看了一下,大家基本上都在画,而且画的还挺好。我就不再一个一个去跟大家去说了,但是这里面呢,有几个重点跟大家再强调一遍啊,跟大家再强调一遍,大家看呢。
28:06
我们这里面说过几句话,非常关键。什么话呢?首先我们说过就是一个实例对象的,大家看到我们说的是实例对象的影视,圆形属性指向谁,构造函数的显示圆形属性,那说明我这个对象所对应的构造函数是谁。我这一个对象所对应的勾的函数是谁?明显是我不接了。能不懂,就这一个对象所对应的构成函数是不是它是,那说明我的一般的函数啊,我们一般的函数的原型对象都是一个什么样的对象,是我这个的实际对象,那是不强调这个是吗。
29:02
Any。所有的函数都在,但有一个除外啊,就是我们就它本身呢是吧,它的本身的原因是不是就它呀,是吧?而他啊,还指向他自己吗?肯定不指向了嘛,而他的喜事原型等于什么那?是不是比较特别,再说一遍啊,这个地方大家看到啊,首先第一句话是我们所有的构造函数的显示原型啊,就是实例对象的隐式原型指向什么构造函数的显示原形。对吧,啊OK,那所有啊,所有我们定义的函数。它的圆形对象都是谁的实力,Object力,那它是不是这么指向的?看到了吧,但是有一个意外啊,是吧,是不是他自己。
30:04
啊,这个没例外,就是这一个还一个。大家想我们说啊,我们开始说一句话,就是说构实对象的实例对象的影视圆形等于它所对应的构造函数的显示圆形,对吧。那你想我们一般情况下,我们的一个我们的OB object。O进来,它是不是实际对象,是不是是没问题对吧,那它是不是等于我们构造函数的什么显示圆形,这没问题啊,对不对,是吧?啊没问题。好,那一个函数它既有显示形,是不是又有隐性,那它们相等吧。这里一个问题啊,就构成函数,它既有显示原形,又有影视圆形,对不对,这个它本身自身的显示圆形和隐视圆相等等不相等,但有一个例外,它写方式例外。
31:09
看到了吗?我们有两个规律,有都有,都有对应的例外,看不看懂。嗯,OK。这个是我们理解这个图非常关键的地方。啊,其他的就不用强调,大家都懂。啊,后面呢,我们给大家去讲了一些面试题,这些这个题呢,是其实还是有点难度的啊,而且关键就在这一步。就这做这件事情非常有意思,其实这个是我们经常做的少,一般我们会怎么写,一般我们会写啊a.time点叉叉叉等于一个value扭。能理解吧,一般情况下我们会这么写,这么写的意思什么?给原型对象添加属性或者方法。
32:02
是吧,而这一个呢。是不是改变原型,对啊,也就是说让我让我函数的显示原型是不是指向了一个新的对象,能不能理解?好,那你说我的这个改变会不会影响到以前创建的实力?不会不会不会。因为我们以前超级的实力的影视原型是不是早已经确定了。能理解吧,啊,但是会不会影响我后面创建的实力,会不会会其实这道题就在说这个事情。这种事情其实我们平常的时候啊,一般不太做。但你要知道区别。好,那我问大家,我这么操作会不会影响到以前创建的对象,实力对象会还是不会会,因为我是在原有的实力对象身上加的。
33:12
那会不会影响到后面创建的实力啊,当然也会,那肯定会。那么理解,也就是说我们两种表达的方式。是否会影响到原有的实力对象是有区别的。能走吗?啊,这个大家应该重点去搞清楚啊。好,这是这个。啊,后面呢,我们去说了一下,执行上下文与执行上下文章,那我们说这个概念是由谁引申出来的。我们说这两个概念是通过什么样的东西来引申出来的,变量提升与函数提升。
34:04
也就是什么意思呢?变量提升和函数提升是这种这个技术的一个结果。能不能理解,也就我们平常学的就是最终学到的一个结果,学到一个现象对吧,那导致这个现象的原因就是我们所说的执行上下文与什么执行上下文站啊,尤其是执行上下文这个概念。啊OK,说到这个概念就有一个概念啊,有一个非常重要的概念,经常会说叫预处理。啊,OK,好,我们就来去看一下了,首先我们说的是一个变量提升的这样一个变量提升与函数提升这样一个概念,啊好,我找个人说一说啊,什么叫变量提升。
35:02
韩思成,你说一下什么是变量提升你,你用你的语言给我简单的表达清楚啊。就是挖一个月亮,然后让他在那个。你这赶真赶趟就挖一个变量,然后在那个整个程序。还没有执行之前,这已经就是说把这些提取出来放在这里,比如说没解的过程,你再说原因了,你就说现象,我刚刚才说了这是个现象,你把那现象给我描述清楚。呃,就是这个变量提升到底什么样,也没人听就能听就知道什么是一个什么东西,而不是说你在去,你刚刚其实在解释这个有点类似于解释这个原因呢,是怎么产生这个变量提升呢。
36:00
我要跟大家说啊,有时候你你在回答别人问题的时候啊,有的时候就不知道用什么语言表达,我感觉我就清楚,但我就不知道用什么汉字能够去表达,对不对,这是很有可能的,那你该怎么办?以前老师说过吗?就是你用语言表达不清楚,用用正常的语言表达不清楚,你该怎么办?对呀,很简单,小学就开始告诉你举例子。学校的老师举例子能举吗?举个例子,就比如说一个变量,你就不能取个名字啊,比如说变量AYA,然后A的话就提升到那个。到前面所啊,其实非常简单,譬如说我我就先,呃,我就先别说别了,我跟你举个例子,协调写这条语句,我挖了一个A啊,挖了一个A等于三是吧,这条语句,我在这条语句之前,我去输出这个A,它的值是案例find,而不是包括,这不就说的很明白了吗。
37:10
能不能听懂我说的话?啊,你用语言来表达,就是在语在变量定义之前,就可以访问到这个变量,但是这句话你不,你可能很难说出来。在变量定义句之前,我就可以去访问这个变量了,只是它的值是什么?离派这是一种表达方式,但这种表达方式还没有举例子来的直接。你懂吧,你这么刚才我这种方式说,他得仔细的听着,非常认真听,才能辨别我说的这句话是正确的还是不是正确的。能理解吧,但是我用代码来表达就不一样了,我说Y等于三好,我在这个语句之前我就去输出A。
38:02
那个A输出的是I five。因为程序员有一个毛病,喜欢听代码啊,你一说代码我就我就神清气爽是吧。这很正常,你要说,当然你也听得很清楚。再再跟大家强调一遍啊,这是一个基本的技巧,大家去面试的时候,尤其跟人交流的时候,要说到一个概念。啊,要问到一个什么概念啊,你要用直接的纯语言,纯文字语言来表达。你觉得表达不清楚,但是你又感觉你是这个概念,我是懂的。是吧,那你最好应该用什么,是不是那个伪代码来去表达啊,啊就说一下就行了。能不能理解好,那什么是函数提升?其实非常简单,就是在函数定义之前,函数定义句之我就可以去什么调用执行这个函数,这里我就强调了是有区别的,对不对,你别说我可以去访问这个函数,这不太好了,对不对?
39:15
能不能理解啊,可以调用执行这个函数啊,那用代码说也是可以说的啊,我定义一个方险F对吧,我在前面就可以调为F,你说老师我需要写方写F小括号大括号,你别这么念。你说的那个描述,那个代码是让别人能懂就行,难道他还不能懂,你定一个F什么定义啊。能不能理解,就是这个非常关键啊,这这一点其实尤其重要。好,后面我们说了,那谁先提升,随后提升了,变量先提升,接着才什么函数提升。
40:11
对吧,那有的时候啊,有些人就会说函数提升的优先级更高,高于变量提升这个高,于是说它提升的时间早还是晚,晚后执行。那么你啊,OK。好。那提升完了以后,这个A去哪了?提升到哪去了。放哪去了啊,放到站里面去了不完全对的啊,这里面我们要你说的站里面也没什么太多问题,但是我们要说的事情要跟我们现在说的这概念相关,你说其实站里面跟我们这个没有关系了。
41:01
放到什么执行上下文里面去了。但是我们说过,执行商业纹分为两个两种,一种是叫全局执行商行纹,一个叫什么函数执行商角纹,那到底是在哪去了呢?得看这条语句是写在函数外面还是写在函数里面。是不是如果你是一条全局的语句,那你就提高到什么全局直线是window里面去了。对不对,那如果你是一个函数内部的语句,那什么时候才会产生提升?是不是执行调用函数才能产生提升呢?能不能懂啊看。别看他,你只要把我刚才说的问题问题搞清楚,其实这个问题就差不多了。
42:07
啊,我们说过了,这里面首先我们知道代码的分类是吧,一个全局代码,一个什么函数内部代码是不是啊,这个搞清楚他们不太一样,因为一个对应的是什么全局执行三角文,一个对应的是函数执行三级文,诶他们有一个流程的,首先我们什么时候确定选组质性上行纹。什么时候确定?这个全局执行三角纹。是不是在我们全局代码执行前呢,将谁确定为全局实行,看完window,那只是确定好了以后干嘛呢?是不是要做预处理的操作,那个预处理实际上去收集数据,我把它称为收集数据,能理解不收集什么数据啊,全局变量。
43:04
但是这个有个前提是用哇定义的全体变量,上一次还有个是忘了跟大家去演示。有一个有一个什么样的情况呢?有这样一个,有这样一个情况啊。嗯,我在这里面来写一下,大家看一下,譬如说啊,我在这里面定一个定一个定一个C。等于三是吧?请问在31行的时候,我的window里面有没有C,有没有没有,为什么没有?因为它不是用Y定义的,我们刚才说过了,它必须是用Y定义的全局变量才会受益。能不能理解,那什么时候他才知道C呀,是不是要执行这个语句的时候啊,啊这个呢,大家也可以完全可以通过它来看一下就知道了。
44:08
这不我们这么多代码嘛,是吧,那我点在这里是不是就可以,那我刷一下是吧,这个里面是不是有一个global global水啊。是不是就在window,你看有A1A2看到吗?那看到有没有C啊,有没有C没有,它这个是按字母排序的,看到吗?它这所有数据按字母排序的没有了,OK。啊。这个是大家需要去知道的,其他的不用管它啊。好,这个大家应该要清楚。好,下面我们要说它它底收集收集哪些数据,除了全局变量Y定义的全积变量,还有什么?是不是用方形函数生命定义的函数?还什么,还收集什么,还收集this。
45:03
是不是这意思是,而且收集的时候是不是给它们赋值啊?而它的值是什么?Find,而它的值是不是就是函数对象是不是是方写,而它的值是多少window,而且把这个变量和函数放到哪去?保存到哪去,是不是保存到window里面去,大家看到了吗?对不对,也就是保存到我们全局执行三个完整面去吧,啊这个要搞清楚啊。好,下面啊,就是把这些东西都整理好了以后,我是不是才开始执行我的程序代码。啊,记住了,这整个过程分为三步。第一步确定执行上下文,全局执行上下文,为什么window,第二步是不是就做我们的预处理是吧,就是我们组第三步执行代码,全局代码。
46:08
N了,嗯,好,那我们对一个函数的直接上就怎么受产生这个对象是不是调用函数的时候功能调生。那比如说我有一个函数叫M,我就这么调,产生一个执行上循环对象还是两个。这个两个跟你是不是调用同一个函数有关系吗?没有。对吧,那我在执行函数,它也有一个基本流程,首先它得去创建一个这里啊函数执行上级文对不对,能不能懂。接着干嘛去予以处理是吧,所以说也就是我们平常说的收集数据,能不能理解,那他收集哪些数据啊。
47:05
是不是我函数内部的逐变量,它函数那边逐要两两个一个一个是形参,能不能理解形参是不是变量,是不是还有我们用Y定义的什么矩入变量,用方形定义的是不是函数啊,用函数生明定义的函数还有什么this是吧?还有什么是不是还有argument。有不有。除了这个瑞士啊,OK,其他的是不是都会放在我们的什么,大家看到行参。啊,这些东西这些都放哪去了。是不是一上用文跟刚才一个意思对不对,但是在放之前是不是先要出什啊先赋值。
48:01
你就行,餐副不吃。行差在放之前负不负值啊,负值它负为什么值啊?时差的值我的阿值有没有值,有不是我的时差列表吗?对不对?我的那个逐变量是什么值and find,我的函数什么值?不就是函数对象吗?能不能理解啊?那也就下面做好这些事情以后,我们是不该所有的数据都存到我们的那个执行上下文里面去,那建议个下一步干嘛,执行函数频率。那执行函数取句是不是涉及到我要去找某一个变量?我要长的面料嘛。我查哪边的去哪查。去哪查,是不是执行上下文里面去查呀,是吧,刚才我把数据放到这里面来了吗?但是啊,本质上其实这个执行上文并不是一个真正的对象,而是,呃,说白了,实际上整本质上是什么?本质上是我们这个整个站结构里面大的站结构的一个一个区域啊,管理一一片区域,你可以把它看成一个对象,但这个对象有没有在堆空间里面,没有能理解,不,它是在这片一片区域里面的。
49:31
好,那搞好它以后,后面呢就好懂了啊执行三级文章这个站用来干嘛的,首先来说。是不是管理或者保存我们所有产生的什么东西,执行上线管对象啊,对不对啊,占底肯定是谁window对吧,占比肯定是window上面的,是不是我调用的函数产生了函数三角,那譬如说我这我产生三个。
50:04
那应该是个什么情况呢?首先最底部的是那个什么window,那它的上面是不是都是函数直行三角,那这两个函数有什么有什么关系?一个是F1,假设一个是F1,一个F2。二应该是F1内部去调用什么F2才会产生这样的现象。能不能懂,必然是F1内部调研八。对吧,啊,不然的话,他们两个不可能同时存在嘛。啊,后面呢,我们去也去做了一些面,这个试题还是挺有迷惑性的,主要是有一些迷惑性啊,跟你讲了,你讲你也明白,但是并不保证大家做的时候就一定能做对。啊,即使你今天坐在那,估计到你真的面试的时候再做,估计忘了,因为他有迷惑性。
51:06
啊,这是这一个,那到此为止呢,我们基本上就把我们讲的两个概念,一个叫圆形圆形念,一个叫执行上下文与执行上级文站,啊这两对概念给大家说了说,那后面呢,我们还要去说做欲作用链以及必包的一些知识,不过呢,我们先休息会,休息会下面再做啊。
我来说两句