00:02
啊来啊,我们把那个先呢,还是把昨天讲的东西呢给他,呃,复习一下啊。首先我们要知道啊,昨天我们一共讲了几个点,大的点啊,我找个人说说。嗯。丁思瑞。人呢?你说一下我们昨天讲了几个大的点。不是。啊,数据类型第一点还有什么。对象才变的。对象。变量。还有什么?嗯。最后我们讲的什么?
01:00
嗯,行,挺好,你要大点声啊。我们昨天主要讲了四个大的点,第一个呢,我们最先讲的最基本的一个概念叫数据类型。啊,第二个呢,我们去讲了一下数据变量与内存它们三者,以及它们三者之间的关系,第三个是讲的对象,最后一个我们讲的是函数。啊,我现在复习为什么大家大家这么看,是大家自己应该也是这样去看,你检测自己有没有学会,你应该是先知道整体上。啊,我们到底学了什么东西?你先不要打开。嗯,你想不清楚了以后再打开,或者说你自己先尽量想对吧,OK,这样能检测你到底会不会。好了。那下面呢,我们说第一个点数据类型,那你说到数据类型,那你在打开之前你就要想一想了。那数据类型我们去研究什么东西呢?
02:00
研究什么东西,第一个是什么数据类型的什么东西。分类对吧,因为我们是有各种各样的数据类型啊,啊有一个分类,还有一个什么是判断某一个数据到底具体是某一个类型呢。哎,这里面两个重要点啊,一个是分类,一个是判断啊,这里面第三个呢,一般情况下会有一个相关问题。啊,后面也是一个是一个意思。能不能懂那分类,那你就想啊,甚至你都可以在这里面去去给他扩充,就说是外面扩充什么意思呢?分类分哪几类啊。两大类对你先整体再细节,你不要一上来就说,哎呀基础类型好多类,你不能这样懂不懂我怎么样产生一个分支呢。
03:00
这里面按一下你选中它按一下table键。按下黑键啊,你要你要说你要没有快捷键,那你这里面应该也是可以插入的。对吧,是不是一样可以啊,OK好,那也就是说有一个叫什么。基本数据类型基本是吧,基本类型也称为什么。子类型,呃,产生一个兄弟节点呢,按选中它按一下NT键就可以,其实就两个键,一个table键,一个NT键。我现在之所以这么做,是告诉大家怎么样去利用我的这个思维导图来去复习,来去总结。啊,你自己检测自己到底有没有学懂啊,基本类型,还有一个叫什么对象类型啊,我们也称它为什么引用类型,我们就不严格区分了。好,那下面呢,我们继续往下看的话,就是值类型是什么情况,对象类型有什么情况,你得一步步这么想啊,实际上这是一种发散式的思维,这种思维呢是很好的,能帮大家对知识呢有一个非常好的结构。
04:14
二基本类型有几类?五类,但有三类最常见的,对不对,生活中常见的啊,数值可以吧,啊,没有问题。还有什么啊,使劲字不串,还有什么过子过,这三类是非常常见的是吧?诶,还有两类生活中不太常见的,但是我们需要一个是什么unDeFi类型,还有一个什么long类型。没问题吧,啊没问题,那对象类型啊,其实都是什么,但是呢,我们会引申出来两个特别的类,我们叫一类叫什么function函数,一类叫什么array数组。
05:07
那你说我下一步再研究什么?这里还有什么需要想的吗?就是某一个类型,它它能有哪些值。能不懂?比如举个例子,我number能写是不是任意数值啊?能懂吗?那我这一个是什么,是不是任意字符串都可以啊,任意字符串,那字符串它是不是用单引号和双引号,必须用单引号双引号引起来是它的一个特点嘛,那它的值是什么呢?To或者是什么force啊,你应该像我这样把它给填充下来啊,如果。啊,下面你能做这样的事情,基本上你就没问题了。哎,这个呢,它是只有一个值叫around呢,也只有一个值叫什么now。
06:09
对吧,OK,好,Object实际上是什么?任意对象是不是都是我们这个类型?对吧,啊呃,这个方形是一个什么特别的对象,对吧?特别在哪呢?可以执行,之所以可以执行,它包含的是代码数据。对吧,啊好,那这个A瑞也是一个什么特别对象,特别在哪呢?它是不是有序的结构啊,内部数据是不是有序的啊,内部数据有序,那有序的话我怎么访问呢?啊有序。数字下标这样一个特性。
07:03
没问题吧,没问题。啊,那如果你能达到这一点,那分类就基本上这一点是没什么太大问题了。而下面要说的是另外一个,就是什么呢?分类的判断,首先我们要知道有哪些判断的方式啊,有三个,一个叫是吧,一个叫,一个叫全等。是吧,全等比较简单,我们先说它先把简单的搞了,能判断什么,其实它就能判断两个类型,一个让一个什么find,为什么呢?它能判断这两个类型啊,因为它的类型只有一个值,当然好判断了。能理解吧,好,那专门用来判断什么呢?判断对象的具体类型。
08:08
能理解吧?它的结果应该什么结果是不值啊,或者false这个等等等,是不是也是false啊。对吧,啊。Type返回的是什么?返回的是这个数据类型的字符串表达。首先它用来去返回的数据呢,是一个字符串值对吧,那个字符串值是个什么意义呢?代表或者要对应的是那个类型。啊,我们能判断哪些东西。数值能不能,数值可以吧啊数值就是纵串行不行行它不是俊嘛,它小写的对不对,是小写的string轴串吧,啊这个要知道啊,还有什么是不是布尔值啊啊不尔值还有什么anyway例能不能判断可不可以。
09:10
案案find还有什么方险,因为方险它作为一个,它其实确实也是个对象,但它的返回是不是比较特别啊。嗯,OK,它返回的那个type返回来就是方形字符串。关键要说不能判断的是什么,不能区别的,这个要去就专门说一下,这个非常关键是呃和与什么对吧,还有什么和什么,因为这个是经常。笔试的时候会问的东西。因为这东西比较特别嘛。但是啊,如果你跟问的时候,如果你能像我们总结的这样,哎,我们会说判断方式有三种啊,每一种都针对于什么类型。
10:05
有针对性的去说。啊,即使他就问这一个问题,如果如果是面试的时候,他就问这这里面的这个问题,你说完了以后,你可以我可以跟他说说,你说我总结了一下那个判断数据类型无非就几种手段。为什么要这么做?是因为你要跟别人不一样,面试的时候你怎么样脱颖而出?对吧,你对于问题的回答是跟别人不太一样的。能懂吗?但前提你肯定要懂啊,你别说完了以后,后来发现哪三种。我不记得了,那肯定就不行。前提是你知道对吧。嗯,啊。这说的是数据类型和数据类型的一个判断。我希望大家下去以后,以后都按这种搞搞法去做,怎么样检测自己真的会。
11:04
后面我们是不是讲了几个问题啊,这三个问题也是比较重要的,尤其是前两个啊,OK,什么是UN find,什么UN find和long有什么区别,什么时候用变量复制为long啊,这个我就不再一个一个说了啊,大家自己下去了,自己看。好,数据类型我们就先说这么多,下面我们说这里面可能东西比较多的一个点,就是数据变量和内存。那我们需要先打开之前先来想一想,在这里面我们要去研究一些什么东西了。研究什么?第一个研究什么是数据,第二个什么是变量,第三个什么是内存,第四个。他们三者之间的什么关系?最后呢,有一些相关的一些问题,需要我们去深入的去看。
12:02
在打开之前,你一定要先想一想。那我这里面我就不再一个一个写上去了。我们来看一下什么是数据呢?嗯,这个地方你就要去自己要一个是你不一定要完全我的话,但是你的话你的话呢,要总结出我这个这样的到这样程度也不太容易啊,所以你最好是在我的基础上进行一定的理解,也可以有一点改变,但是你不要完全的按自己的说法去说。首先什么数据你要知道啊,数据,譬如说你举个例子啊,什么数据呢,我一个三是不是数据是吧,我一个ABC是不是数据。是吧,啊,我创建了一个对六了一个对象是不是数据。是不是是不是都是啊啊都是那这些数据,那我怎么样总结他们的一些特点呢?是吧,我们这里说的数据肯定是内存中的数据,这里有一点叫内存。
13:05
还有一个某每一个数据,它是不是都代表着特定的什么。特定的信息。譬如说我六一个破,那就代表了什么。是不是代表一个人呐?对不对啊,OK,好,譬如说我写一个字符串二的硅谷,那可能就代表我们上硅谷的那个名称,这意思吧,啊,这个搞清楚,有人可能就说老师我写个A,你跟我说一下代表什么。这只是写,这个东西只会存在于测试中。能不能理解,在真实的开发中,每一个数据都应该有它特有的意义?好,那这里面呢,我们最终就总结出来了,数据它是存在于内存中,代表特定信息的一个东西,而这东西它的本质在内存的本质什么?
14:03
0101的什么二进制。它具有两个特点啊,一个是什么呢?可读写一个,还有一个什么可传递是不是,其实还有可计算的,还记得不是不可进行运算,至于能进行什么运算,看什么,是不是看数据类型啊,啊看数据类型这个要要知道,后面我们跟大家说了一个很重要的一句话,就是一切什么这些数据啊,这里面强调一个东西。函数是不是数据是吧,现在大家理解这个东西应该很简单,因为函数是什么东西,是对象嘛。对不对啊,我们在内存中操作的目标都是什么东西,数据我们能进行的操作,这里面列了一下,并不是所有的啊,譬如说什么运算,算术运算,逻辑运算,负值运算,什么调用函数,传参,我调用函数是不是这个运算,你是不是也可以把它看成一个运算,也就是说我手里拿着一个test。
15:11
但是我就拿着T的那个函数执行了吗?有没有没有没有怎么办?是不是加括号之行,你是不是可以把我们刚才说过了,后面说过,你可以把这个括号看成一个什么是运算符啊。还记得不把它看成一个运算符,而且这个括号里面还可以穿什么,是不是时差啊,对吧。看时尚。CLA。这个大家要知道啊,那说到这个里面就有两个,一个叫时参,一个叫行参。知道吗?这个应该没问题,那我问大家行参的本质是什么?变量。能懂吗?行差的本身它不就是一个变量吗?对吧,而且是局部变量。
16:05
对不对,那时差的本质是什么呢?变量的值其实上就是数据嘛。对吗?能不能理解你去传一个时差,传个A进去,你传了一个A进去了,实际上你把A传进去了吗?不是,你传递的是什么A的值,也就是A类型中存的数据吧。不管这个A是基本类型的变量,还是引用类型的变量,传的是不是都是这个值。所以说我们的行参的本质它是变量吧,你定一个形参A是吧,你是不是用来去接收数据的,它是一个变量啊。而且是个局部变量,那时参的本质呢,实际上就是我们变量的值,或者叫数据。
17:01
能理解吧?啊,能就行。后面呢,我们会去讲什么是内存啊,你要知道内存是一个存储空间,而且是一个什么临时的存储空间。那有临时的,必然有持有的或者永久的,对吧,永久的存储空间在哪里啊,硬盘上面。那这一个存储空间,这个内存的存储空间是怎么产生的?是不是简单来说就内存条通电以后产生了啊,而且我们是不是还说了一下它整个产生和死亡的一个什么,是不是一个过程啊。这个过程不需要你背,你主要是自己把它能够,最好是能够自己写出来,能写几遍。看自己能不能把那过程描述清楚。你自己描述。这个有意义啊,能够让你对于内存呢,有一个更加更加切身的一个体验,可能大家以前都是觉得内存这东西好虚啊,因为看不见,主要是。
18:13
啊,这里面已经说过了,我们不要说了,下面有一个概念叫分配内存。大家说什么时候去分配内存啊?大家现在想啊,你不用看它这个,我握一个A。是不是就去分配内存去了?是吧,我定义一个函数。是不是也要为我因为定义函数,实际上是不是创建函数对象去了啊OK,你六一个对象需不需要分配空间了。是不是也需要啊啊OK。这个大家应该要去知道啊,那分配空间我们是只需要只需要做一个事情的,只要去做一个声明就可以,比如说我们写语句,那个分配空间的事情是不是有引擎在内部去做呀。
19:03
我们要说我分配,我需要一个一兆的空间,我需要做这种事吗?我需要做这种事吗?不需要吧,我们不需要。如果在C语言里面,就需要C语言里面可以自己声明,你说我要一个多大空间,用来做什么?但是在JS里面是不需要的。那什么时候释放空间?也就叫释放内存啊,也就是我我这里面开始有一个A,是不是你生命的一个A,它是不是要分配的空间是吧,那我那个内存,这个内存什么时候才能够去释释放出来呢。是吧,如果那看很多情况,如果这个A是一个全局变量。在当前这个运行里面,它会释放吗?不会人说老师我把它附上来,那是不是就是已经吃饭了呢?吃饭了吗?没有。
20:05
前提啊,刚才说了,这是个什么变量,全局变量。那我把它负责安方行不行?是不是吃饭的呢?没有。啊,记住这个事啊,也没有。好,那什么哪些东西会被释放空间会有情况被释放呢?譬如说诶,它是个植物变量。是吧,什么时候被失败函数执行完了以后,这一个逐变量占用空间是不是就失败了?认懂吧,好,那如果我这里面是个对象,我该怎么做呢?它是自动释放的吗?不是,它首先第一步得成为什么垃圾对象,什么样的对象是垃圾对象,没有一个引用指向的时候就是垃圾对象。
21:03
好,那我问大家,我有一个A变量,它等于一个对象。那我怎么样让这个对象成为垃圾对象呢?A,等于什么那?也就是说我们这个对象现在是不是只有A来指向,那要想让它从那对象很简单,就是把这个线给他什么切断切断。能理解吧,来好,那实际上是不是就两种方式,一种是局部变量和局部函数对不对,哎,它在函数执行完了以后,它就自动释放,这个叫自动的释放,懂不懂,然后我的对象只有当它成为垃圾对象的时候。以后,在以后的某一个时刻被谁回收垃圾回收器回收,它还并不是自动释放了,说白了,它并不是立即马上。
22:01
那有人可能就问老师,不是立马上,到底什么时候?因为垃圾回收器运行的频率是非常高的。基本上跟立即马上没有太大的区别。对于我们的。认识的时差来说是基本上没有区别的,但是我们得知道它是有区别的。嗯,OK,好,这是这样一个事情,大家需要去知道啊。还要知道,一个是一块内存,它包含几个数据,两个方面的数据,有两个方面的数据,一个是它内部存储的数据。这个最重要的是吧,那其次还有一个数据可能会被用到是它的什么,它那个内存所在的地址值。什么时候会用到这个例子?首先这个内存应该是一个对象内存。能不懂是一块对象内存,当我把对象赋值给一个变量的时候。
23:04
他是把那个对象内容赋值给变量了吗?不是,它是把什么对象的地址值赋值给了变量。只有在这一种情况下面才会用到地址,其他情况下我不用。不用并不代表不没有啊,是咱不需要对不对,能不懂啊这个搞清楚。好,内存还有一个分类,这个应该是以前知道的,一个叫占,一个叫什么对占有哪存哪些数据,全局变量和什么局部变量。这个占的空间相对来说是什么呢?较小的什么样的空间较大呀?对空间对空间用量成什么对下。这个对象指的是任意对象。你说跟你是不是是不是函数,是不是数组有关系吗?没有。
24:03
嗯。这是这一个啊,后面呢,我们说了一下什么是变量,这个应该好说,首先呢,这里简单解释,量是可以变啊,值可以变的一个量,它由变量名和变量值组成啊,一个变量呢,它对应块什么小内存,那变量名用来干嘛呢?找到那个内存。大家想我要读取一个变量值,譬如说我有个A,我CTRl.log个A,实际上它有个过程。是吧?首先要根据A这个名称找到什么东西,它对应的那块内存吧。A相当于是这个内存的什么。标识。能不能懂啊好,找到它以后,下一步是不是读取这个变量,这个内存里面的数据啊,嗯,那你说变量值是什么。
25:04
是不是内存中保存内容以上数据啊,你想想看,我们平常看l.log a嘛,我们说打印输出A的值嘛。能理解吧?好,这是这个。最后呢,我们去说了它们三者之间的一个关系,首先要知道内存是用来是一个容器,用来存什么的,存数据啊,OK,这个数据肯定是程序运行需要的,对不对啊,这没什么问题啊,变量是什么?是不是内存的一个什么标识,那我们通过变量啊,通过变量它的名字来找到对应的内存,进而操作内存中的数据,大家知道操作到底值是什么,其实就两个,一个读,一个什么写。前面我们还跟大家说过,那什么时候是读,什么时候是写了,譬如说我有个A,我到底对A进行了什么操作,怎么看呢?
26:08
哎。是吧,有好几种搞法,譬如说举个例子啊,A等于。是吧?或者是等于A是不是有可能?A括号有没有可能?有可能,A点有没有可能?A中括号有没有可能?是不是都有可能?是吧,甚至于说我们调用一个函数。白茶进去有没有可能?是不是回答,哎,你看我就这么短的时间内取来各种各种用法,好了,现在我们就要看了。哪里是写了?哪里是写,就一种情况是血。就这里。
27:00
看到了吗?其他的无论你是等于A还是A括号,还是A点还是TA还是A中括号,这都是要干嘛呀,是不是堵啊?能不能理解啊,其实关于写还有一种情况就是你在定义一个函数的时候,你定义一个方向,你定义一个方险,你生命一个变量什么。声明一个形象A有没有可能有吧,那这个时候我调用的时候A。到时候是不是接收数据啦。A是不是这个变量,它实际上最终会执行一个A等于叉叉叉吧,对吧,那你想这个A是不是相当于在等号的左边呢。能不能到啊,想清楚就很简单了。那就是说只有一种情况是写。
28:00
对吧,你这个变量在等号的什么左边就是写其他的时候都什么读,你说老师我知道这个有用吗?有用,非常有用。啊,这是这几个概念,以及他们之间的关系啊,后面呢,我们也讲到了一些相关的一些问题啊,尤其是我们后这里面说的是。这两个啊,前面两个非常的关键,一个是关于父子一对的问题,也就是说什么意思呢?我一个A等于一个叉叉叉对吧,Word一个A等于叉叉叉吧,A里面到底保存的是什么值,是基本的类型的值还是个地值对不对,这个是不是要去看各种各样的情况,你一定要知道怎么样分类分情况。好,我们再来把它说一遍,这个叉叉有一种情况,第一种它可能是个基本数据。
29:02
对不对,那我就把这个三是不是直接放在这里面了,他可能是个对象。那是不是保存的是这个对象的定值,那它也可能是个变量,是不是那存的是什么变量的值,只是这个变量的值可能是什么基本的值,也可能是地址值,对,你别看了,就咱们说的这一个是你想嘛,这个这种代码在编程里面是非常非常常用的。你怎么做一个赋值,那不是经常用的吗?要不然也就是说我们对负值如果理解错了,也就这几种情况,没别的情况了。OK,还有一个关于引用变量赋值的问题。啊,这个地方。这里面主要涉及到引用传递的时候它会不会改变的问题啊,这里面实际上有两种情况我要跟大家说一下啊,前面的前提条件都一样。
30:07
前面的前提都一样,也就是说什么意思呢?两个引用变量指向了什么同一个对象?记住了啊,两个引用变量值,一个是A,一个是B。可以吧,那它这个里面呢,有一个属性假设叫name啊,等于等于ABC吧,啊,ABC,我这两个引用变量是不是都可以看到这个a name它的值是ABC啊啊下一步我们就有两种做法。哪两种做法?一种做法是通过B来修改对象的内容,譬如说我通过B改这个A类,改成BAC。你说这个A看不看得见,看得见吗。对不对啊。
31:01
下面一个问题,下面一种情况就是我不是通过B去改变对象,而是改变对B本身。开始我改变B了吗?我改变B本身的吗?刚才操作没有,我改变的是不是这个对象啊。对不对,我没有改变B,那下面真正改变B,怎么改变,要重新给它赋值,就是改变B。能不能理解,你要想改变某一个变量本身,你是不是要对它重新赋值,那我有可能,譬如说我B等于等于一个对象。可以吧,那你想想看,这个键子还在吗?不在了,那不在以后我通过B还能操作以前的对象吗?不然我这个A看到了以前对象有变化吗?没有。对吧,啊,你看的这个好像基本上应该没问题,但是最怕的时候就是大家一定要记住一个函数在传递参数的时候。
32:07
是什么?对吧。OK,我这个地方我是不是有可能把B传进来。是吧,我这个修改是不可能发生在函数内部。对吧,那这个时候你就容易犯错误。嗯。你要知道永远记住一个是刚才我们说过变量一,将一个变量赋值给另外一个变量,永远是将A的值。赋值给什么B?对不对,只是这个值可能是基本类型的值,也可能是什么地子值。这个你别看着这个小小问题啊,这一点非常非常关键,我也反复跟大家强调这个事。
33:00
好,这是这样一个东西啊,后面的有些问题我就不再说了,大家自己反应。好,后面呢,我们去讲的另外两个东西,一个叫对象,一个叫函数,我们先来看一下对象啊,这里面也有几个问题啊。什么是对象是吧?OK,为什么要用对象啊?对象的组成如何访问对象内部的数据,它是一层一层递进的一个关系。那我们来看一下什么是对象呢?其实啊,这个地方有一个啊,我说了这样一句话,看大家能不能理解。代表一个对象呢?代表现实生活中的,现实世界中的某一个事物能不能理解。来是他是该事物在编虫子的抽象。就是我们什么意思呢?我们,我们现实生活中有一个真实的事物是吧,我要把它抽象成内存中的一个什么,是不是对象啊?能够理解吧。
34:01
啊OK,就好像说说说什么啊,譬如说啊,我看到一个车啊,现在就说我会,我可能我是一个画家是吧,我梦想成为画家,我我就我就看那个车,我是不是可以在纸上画出一个它那个长得差不多的一个车来,那我纸上那个车那那那画的那个车是不是就是那那个我们现生活那个车的一个什么抽象吧。能不理解啊,OK。这是一些专业的术语啊,抽象好,那下面这几个挺有意思啊,多个数据的集合体是表明我们对象是用来封装是吗?多个数据的。还有一个概念叫什么容器?其实一个这两句话其实是表达一个意思。能看出来吗?这两个,这两句话其实表达的是一个意思。就是,说白了就是对象用来放多个数据的,就这么个事。
35:02
啊,那为什么用对象呢。对吧,你就想我有很多个数据对不对,我要存是不是要用变量来存呢?那变量来存,那我是不是如果不用对象的话,是不是声明很多变量。那我怎么样才能更好一点,也就是说现在如果用多个变量有什么问题啊,是不是操作不方便。容易引起冲突啊,啊,譬如说我有两个人。他都有内幕,你说你该怎么办?能理解不?我有两个人,他都有姓名,你一个人还好说,你要两个人呢?你是不在啦?能懂吗?我有两个人都有姓名,我现在用两个变量来乘他的姓名,那你只能握了一个内一等于什么?内了一个内二等于什么?你不可能做一个内容,因为覆盖的效果对不对。
36:03
但是我们可以通过对象来去解决这个问题。我们把每个人的信息,无论他有name age还是别的信息,都统一的放到一个什么对象里面去。啊,OK,你这个有name和name冲突吗?是不冲突啊,你有你的name,我有我,那咱俩是被包在不同的包里面的,对不对?那个对象是不是相当于一个包裹对吧?包裹里面有相同的属性有关系吗?没有。你一定要明白这个思想,明白这个思想呢,能帮助你去很好的理解它里面的一些概念啊后面呢,对象的组成的话说,一个是它有两个部分,一个是属性,一个是什么方法。那属性他看这里面,我是昨天没跟大家说的。
37:04
也就是说,我们一个对象是不是用来去描述我们现实生活中的一个事物。对不对,像人不。这是天生的画家。我随口画,我看还真像个人,这不是鼻子吗?你让我再画一遍,我估计都画不出这个造型呢。我一个对一个对象呢,假设我创建了一个破对象,它用来描述一个人的,那你想一个人他人身上是不是很多数据,那其实一个人,一个对象,一个事物上面的数据,它也分为两大类。可以说他的身高,这是一种数据,对吧,还有一种数据可以说人们说话是不是这个数据是那说话和那个和那个就是身高或者是姓名,它不太一样,一个叫状态数据。
38:04
另外一个叫什么呢?行为数据。以前没怎么想过吧?大家现在想啊,你想明白了,真正的是想明白了,你觉得挺有意思的,确实是这样的,他没有,他说的没错啊。我们需要用属一般的属性来去描述它的状态值,它的状态数据,比如他的姓名,姓名是多少是吧?OK,他有一个行为,他能说话,他能奔跑。是不是都是行为?啊OK,那这个时候他就应该除了属性还应该有什么。方法。想啊,大家适当的还是要想一想,看看是不是真的是这样的。八。下面呢,我们这个也是我这个没什么问题,属性名和什么属性值。啊,属性名是什么类型字符串。
39:03
那属性值是什么?任意类型?那方法我们说代表他的行为数据,那方法跟属性有没有联系有。怎么说的方法是一个什么特别的属性,特别是哪了属性值是什么函数?就是你想啊,我们说我们的方法是不是代表一个行为啊,行为是用来做什么事情的吧。对不对,我们是不是可以用行为动态的去做一个什么事情。那它这个东西肯定是要跟函数对应起来,因为函数是可以执行,执行以后是不是做过什么事啊,因为函数里面不有很多语句吗?有语句了以后是不是就能干活,这个大家也应该去想一想这个问题啊。啊,后面我们说了一下,如何来去访问对象内部的数据啊,有两个,一个是点属性名,一个是中括号,属属性名字符串,尤其是第二种,平常的时候我们基本不用。
40:13
你们以前用过吗?等于说就测试用了一下,再也没用过了,估计就是这样了。很正常啊,这这很正常,因为平常的时候我们基本上是不用的,但是在关键时刻,你要不知道这种搞法,那你这个代码就写不出来了。我们前面是不是分析过了,有几种情况,它是不是就必须用第二种方式,是不是两种啊,哪两种?第一种属性名有什么特殊字符,第二种属性名是一什么变化的值,是个不确定的字,不算,那它就必须是个变量呗。是吧,啊,这个时候必须用第二种,因为你要知道第二种虽然说麻烦,但是么它是通用的。
41:05
而第一种虽然说简单,但有时什么不能使用?嗯,这是这个大家需要去能够去看。后面就说这我们再说了啊,下面呢,其实跟大家说学GS最麻烦的一个语法不是别就是函数。嗯。呃,函数千变万化,是JS里面最最复杂的一个东西。而且关于函数的概念呢,特别特别多啊,是非常多的啊,首先第一个我们这里面啊,基本理解都没什么问题,你平常什么是函数,函数用来干嘛的,对吧?是不是函数啊,是不是一些多条语句的封装体,那函数是不是用来实现特定功能的呀?啊用来实现特定功能,但是如果你不执行有用吗?
42:03
没有是没用啊。对不对啊,OK,这个要知道,那为什么用函数。你用了函,也就是说用了函数有有什么好处呗,对不对,第一个可以干嘛,可以复用。也就是说我函数定义好的话,我反复用,而且反复用的过程中我需要写很多代码吗?不需要,只需要写函数调用的语句吧,就一句话搞定了。还有一个有了函数以后,大家知道我们去做什么事情,是不是都想再去,诶有没有函数可以调用是吧?啊OK。这个时候他是便于我们去阅读代码,去交流,是不是都很方便的。嗯,这个要知道好了,如何来定义函数有几种,两种一种是叫函数声明,一种是叫什么表达式,它们俩本质上是有区别的吧。有一的区别,这个区别对应一个概念啊,你们应该讲过一点,叫变量提升与函数提升。
43:08
嗯。好,最后我们要执行某一个函数,执行某一个函数啊,这里面说的是我们去调用某个函数,是不是大概现在就这三类啊是吧。嗯。这个这些东西啊,都是比较基本的一些语法,一些概念,必须都非常非常清楚,我不是说我就知道一下就行。那个完全不够。好,那这里面还有三个东西,第一个回调函数。我们这里面有两个问题,一个是什么,是回答还是我找个人说一说?嗯。刘开平。那我提醒你一下,我们说要是回调函数必须具有几个特点,三个特点,你告诉我哪三个特点?第一。
44:10
没有。没有声明,那不完了,那没有声明,那还是哪来的孩子啊。你想想,你要没生明这个函数的函数从哪来啊,就是自己调用你前面第一个什么。前面第一个你你想想看,你要走行第一步干嘛呀。啊,你是回调函数,首先它是函数啊,那你第一步的干嘛呀。我第一第一步不知道干嘛吗?啊,你定了。十个,但是不是我调用的性,嗯,对,差不多啊,其实啊,首先得知道回调函数也是一类特别的函数,对吧,但是上面我们就要说它特别之处对不对,其实总结起来就三等,其实任何的语言都一样,包括Java,包括别的语言,如果一旦成了回调函数这个概念,或者叫回调方法这个概念,它都是同样的特点。
45:22
呃,通用的。第一个你定义的,就你定义了这个函数,正常情况下是不是你去调啊,它回调函数你掉吗?你不掉,那你不掉,你定义了,那他最后要也没掉那四回上是吗?那肯定不是吧,那就没意义了,你定义了最后也不掉,别人也不掉,那不最后就放那里就摆着吗?不就是摆设了吗。第三点是什么,但他最终什么执行了。能不能懂这个,那他怎么怎么样才能执行呢?这个地方就要有一个啊,这个地方昨天还忘了去说这个事情,补充一下啊,有一个小东西。
46:09
就是这里面我们不说了,三个特点嘛,但他最终什么执行了,这个执行是有一定条件的,譬如说在啊某个时刻。或啊某个条件下,为什么说要有这样一个东西啊,譬如说我们后面用到定时器。对吧,定时器它是不是要达到那个时间,他才在某一个时刻执行。说白了要满足资金的条件嘛,啊,下面一个在某一个条件什么意思呢?我譬如说我们加了一个点击的回调函数。是吧,那怎么样让这个回调自行是我去调吗。不是,那我应该怎么操作,你得去点那个按钮啊。
47:01
这个点击按钮的这个操作是不是就那个条件。能不能懂我啊,OK,这个三点啊,我跟大家说啊,你在书上肯定看不见。啊,你去任何事干,我是反正没看见过啊,你跟人交流的时候,如果问到相关的观念,你能去说的话,其实他应该就是你说一些你自己的东西,他会觉得是你是有一个思想的程序。嗯,OK。你不要觉得这东西不是你的,你会了,这东西就是你你你想出来的。任何东西啊,只要是你会的,那就是你的。你不要想到这,就以前我们老师讲过,你不能这样啊,你不能不能在面试的时候还听,诶我们老师怎么怎么,我们老师以前讲过这东西,你都工作几年了,还老是学生呢,你干啥呢,你。
48:02
嗯。啊,最后呢,有一个常见的回调函数。常见回调函数,我们这里面就写了两个,一个什么动事件的回调函数,一个是定时器的回调函数。那我有个事情我要跟大家说,回调函数不是我们调的,对不对,那现在就要说一个是吧,它里面this是谁呢?这就是,这就是一个难题,为什么?因为不是我掉的,要是我掉的,我一眼就看得出来这个瑞士是谁。你说是不是?那回调函数你们这意思到了什么?我就就两句话,你说多尔姆事件回调函数就是谁谁。发生事件的动物元素。这个一定要知道。简单来说就是用户操作的这个元素。
49:02
能不懂,那实际上是谁呀,那不就是那个按钮把他们对于当时来说。八点是不是个对象是吧?我们在内每一个标签在内存里面是不是都对应着一个对象跟它对应。是不是啊,你这不是去去找这个对象了吗?我我是不是要根据ID去找到某一个元素对象,某一个I的对象,你早说明他是不是本来就存在。你想想看,你去找一个人,那个人又不存在,你能找到?那个人存在是不是找你找的前提。能理解吧,嗯。啊,记住了,多尔姆事件,回家函数里面的认识是发生事件的那个动物元素,好,那定时器中的意思了。电视节伦温。
50:01
啊,我们也可以把这个,大家看到这个就能说明Z是谁,你看到ZZ是点一的XZ是谁。谁啊,不就是这个巴吗?对不对,你看嘛,这一时间一哪一天你不想去得这个东西吗。就有时候就是你写代码好像能写,因为你老写代码,但是真正问你这个这这个回多姆事件的回调函数认识你就你就不知道了,这说明你还是要适当的要思考,不能仅仅写代码。再一个,这里面的认识是谁?啊,没关系,给他打印输出一下是吧,Lo一下是不是就可以。谁window,你说老师这个window是不是一个数组是吗?是个数组吗?不是,这是window,它的那个to string方法返回的一个结果。
51:04
能理解吧,返回了一个字符串,而这个串它里面首先说明它是一个原始类型,是一个什么,它是一个什么东西,它是个对象,那什么类型的对象,这是个类型吧,能不能看出来这是它具体类型?看懂吗?也就我当前打印的意思是不是window的实例。你说这怎么蒙圈呢?我那个Windows是小写window。是不是这是不是那个实力的一个一个名称啊。我们写window,我写个alert,实际上alert是谁的方法呀,Alert不是我直接调用这个函数吗?是谁的alert,谁的window的,那也就是说我严格来写是不是应该写window.alert那我直接是不是document get element by,那document是谁的?谁的属性Windows对吧?我们称这种东西为什A啊,Document称什么呢?全局的变量,或者叫全局函数。
52:14
它可以把window给了什么省略啊,还有一个事情我要跟大家说一说,就是譬如说我握了一个A,这个也要知道啊,握一个A等于三,我平常不就alert a吗?是吧?那完整的写法应该怎么写window点?这个一定要知道有没有问题,没问题啊,或者说我写了一段代码,window.b等于四,那我就可以alert b。是吧,这个一定要很清楚啊。这是以前应该是给大家应该是讲过的啊,回顾一下啊。
53:03
啊,这是关于回调函数的啊,其实还有几种常用的回调函数,只是我们还没学,所以我就不再去说了啊,后面再再看。还有一个呢,叫I fe。叫什么立即调用函数表达式?Ah okay。就这样的一个,你不用说他的全部用完,你不要尝试着,到时候你去跟问别人问的时候,你把这个应用想把这个东西说出来。啊,你不要,你要非常牛逼,那你可以写说我我估计你一说那个哥们还不知道是怎么回事了啊OK,我们平常说什么呢?说匿名函数自调用。或者有的时候叫自调用命名函数,其实是一个概念吧,啊OK,它的作用是什么?我们说了隐蔽内部,实现不污染全外部的什么命名空间,外部实际上一般情况下就是指的什么全局的命名空间。
54:09
这if fe也是经常会被问到的一个东西,好,函数中的this这里面,函数这里都是我们调用的是吧?刚才我们是不是说过了,回调函数中的this思,我们调用的这思其实并没有多大难度啊,记住我昨天跟大家说的话啊,任何函数都是通过某一个对象调用的是吧?那我们可以去指定是不是,如果完全没有指定怎么办?Window我们指定可能是显示的指定,也可能是隐示的指定,对不对?比如说OBj.test。这明显嘛,显示指令码。是吧,那如果另一个person。我有明确的指令吗?没有,但是我们都知道这最终那个函数体中的认识是谁,是不是新创建的对象啊,OK,还有一个test点库。
55:05
调用开始的是谁,是不是括号里面指定的obg呀,啊对。这个应该要明白才行。其他的就都是window了啊OK,这个前提是我们掉的函数啊,就算是我们掉的。如果是回调函数,我们刚才那两种,一个是多元素是吧,一个是window。啊,这样的话呢,我们就把我们昨天讲的东西呢,都给大家过了一遍,嗯。大家自己下去了,还要花时间给大家看一看啊行。
我来说两句