00:00
好大家好啊,那么今天的话,我们来看一下关于面向对象的这个课程,嗯,一说到面向对象,大家可能会第一时间想到它的什么四个特性是吧,什么抽象啊,封装集成多肽是吧,这个东西。太理论化了啊,咱们的话实际的来看一下面向对象它的一些写法,好,那我们来看一下,首先第一个就是我们先脱离面对象,我们来看一个需求啊,一个什么样的需求呢。就是假设啊,我现在要创建很多的老师啊,比如说咱这有1000多位老师,对吧,我要挨个挨个的创建出来。好,那我们就开始创建了啊,比如说我要创建阿飞老师。编名啊,我们是ES5的写法啊,好,那么而非等于这边的另。啊。好,那然后的话AG00啊18啊。公司叫啊,水平叫什么啊,咱们。
01:02
叫。好,嗯,咱们放在这儿有一个这个就。第一个对象对吧?好,那我们来第二个对象啊,那比如说因为很多老师嘛,这是老师第一位老师啊。好,那我们来第二位老师,比如说咱们来这个对象啊,这个物啦。啊,吴老师啊。A name。他们一局。一个是。产业公司的啊,都是大锤车公司。啊,都是大推车公司啊,好放在这儿是吧,好,那这个第二个对象完成了啊,那么第三个对象。在想谁呢?哎,行,哎。
02:03
行啊。随便随便,我这这个名字是我随便起的啊,你可以不叫这个的好吧,这个无所谓的啊,变量名吗?好,那咱们心爱。咱们。30。Company。公司啊,咱一个公司对吧,好,那这个大锤锤。那放在这啊啊等等等等很多是吧,那后面的话还有一堆一堆堆的啊,一堆堆的是吧,很多很多啊,因为以前多位嘛,这样传插下去啊,就一个一个这样写好,那么这样写可不可以呢?可以是吧?啊只不过。觉得觉不觉得麻烦啊。很麻烦吧,对吧,你这样都有都有都有是吧,那你后面能不能合并一下呢。啊,我们就会考虑这样的一个问题,然后能不能合并一下。那我们通常在如果说我们学过之前的javascript的基础之后,我们都知道是吧,你看到这种重复的事情,我们一般怎么办呢。
03:03
啊,要么循环,要么封装是吧,好,那么这边很显然,那就是一个我们可以将它怎么将它。封装一下吧,可不可以,因为你这样一个一个创建下去是很麻烦的啊,那我能不能封装成一个函数,然后调用函数咱们再去创建呢。可不可以呢?当然是可以的是吧,好,那我们接下来呢,咱们就封装一下,你看一下啊。咱们来到第二个页面里面来,我们来封装一下,看一下,那么首先呢,我们是需要这么我们先拿一个这个示例过来啊。我在这。那这么一个事例对吧,那我们的话,首先我们是要得到一个对象,所以说我们一个方个性啊,咱们随便起一个名字叫做吧,好吧。对吧,然后的话,我先要得我最终的结果是要什么,是要一个对象嘛,对吧,就是我这边的话应该是要生成一个对象。好,最终返回一个对象。对不对,好,那么在这个过程中就是对我们对象的包装了,比如说对象的name. OBbj.name是什么什么什么啊,这个name,嗯,不同的部分咱们干什么。
04:09
咱们是不是传参数啊,对不对,所以说你需要一个N这个表示令对吧,需要一个age表示年龄对不对,所以说我们这边的话等于N可不可以可以是吧。OBj.H。等于。可不可以?是没问题的吧。没问题吧,嗯,这样去写是可以的啊好,那么就说我们先封装好了一个方法,之后我们再呃。直接去调用这个方法就可以了,那么最终还有什么,还有一个这个company。我们写一下卡,这个的话是固定的对吧,所以说你不需要传参数,好,那我们的话大锤锤好放法在这啊,好那么咱们呢,现在的话是有这么一个方法在这啊,它先生成了一个对象,然后给这个对象的话加了一些属性啊,再然后的话返回了这个对象是不是啊,那这个的话也能满足我们的要求啊,所以说我们待会再去创建对象的时候,我们应该怎么办呢?
05:05
就非就等于什么person。N和A是吧,那就是阿飞。啊,这个,呃。年龄啊,18啊,这样子是不是也可以得到一个阿飞的对象?这个能看懂啊是吧,函数执行吗?呃,定义函数返回函数啊。最终返回的是一个,呃,定义对象,返回对象,它最终返回的是一个对象是吧?那么这个对象有什么属性呢?有name属性,有A级属性,有company属性啊,并且你每次定义的对象都是不同的,那返回对象也是不同的,不存在什么引用关系对吧?好,那你person。乌拉。零二十是不是也是可以的。没问题吧,没问题是吧,好,那你再来一个心啊。好,那你这边的话。
06:01
行啊。30是吧,都没问题啊好,那么你要去创建,那就挨个挨个往后面去创建就可以了,对吧?好,那么这是我们最常见的一步啊,就是把一些这个复杂的事情,咱们怎么。就是把一些重复的事情,不是复杂的事情啊,把一些重复的事情,咱们先封装好一个方法,咱们调用这个方法是不是就可以了,对吧,你看我们这边你要每次你都要写这么多行代码,对吧?这个还是一个非常简单的对象,对吧?假设这个对象很复杂呢。内容很多呢。啊,那老师里面的话,不仅仅要name age,还需要其他的一些方法呢,是吧,比如说呃,地址啊,身份证号啊,手机号啊等等很多很多内幕是吧,那你都要一个一个去写啊,是挺复杂的吧?是的啊,好的,你每次都要重复去写这些啊,都是都要每次都要重复去写这些属性名啊,这是没有必要的,同时的话,你也发现它里面还有共用的。对吧,这个共同点啊好,那么这个时候呢,我们就用封装的方式,把它这个封装起来,装成这个样子。
07:06
嗯,装成这个样子啊,好,那么这是我们的第一步啊,这其实也就是能体现出我们面向对象的第一个特性啊,就是封装性。啊,风动性啊,好,那么写成这样,我们还没有完啊,怎么还没有完呢,我们可以接着往下看啊呃,接下来我们来看什么呢?看这个一个非常有意思的东西啊,叫做六关键字。就六关键字啊。六关键词那么六关键词它是什么作用呢?那我们在哪儿看到过吧?先来看这个吧,好吧。去哪看到过?六我不记看到过没。看到过吧,嗯。这个我写上面去啊。六对,看到过没看到过吧,是吧。看到过吧,是吧。
08:01
6XMLHTTP request看到过没看到过啊好等等这些啊,就是我们那些六的这个。这个使用场景我们都看到过啊好,那你发现一个共同点六后面跟的是个什么玩意儿啊。跟的是这么一个东西,然后的话,他怎么能来到一个括号,看到没,所以说我们知道这个,呃,这个的话,它是一个什么数据类型啊。什么东西函数嘛,对吧,只有函数才能加括号的啊好,那么所以说六后面一定是跟一个函数啊,这个我们知道它的特性啊。六后面。跟上。一个函数对吧?好,那么为什么这个函数要通过六这样来执行呢?对吧,或者说六执行六在函数执行的这个前面,咱们加上一个六,会对我们的函数有什么影响呢。啊,这是我们要给大家讲的问题啊。就是在。
09:02
在函数执行。钱加六。嗯,对。函数有什么影响?哎,这个问题咱们先探讨一下,好有什么影响呢?嗯,就直接告诉大家啊,那么第一个影响就是什么呢?就是函数内部。产生一个框对象。嗯。内部认识啊。内部指向。指向这个对象。嗯,这是他的第一点,函数内部会产生一个空对象,内部这次指向这个对象什么意思,来看一下。Function。是吧,好,那么。这是点那个好,这是指向谁啊。非严格模式啊,这是指向谁?
10:03
什么东西?函数自执行这次指向谁window对吧?好,那我们来看一下是不是window啊。嗯。这个怎么回事?号怎么打不开呢?啊,我们这样直接打开啊。好,来看这儿。是不是问道?是的,没错。好,那么它是指向window的啊,因为函数自制行吗?这次指向window,好那么如果说我加了一个六。他这个这次指向谁,我们可以来看一下啊,来123刷新,它指向谁呢。他写的是一个A啊,但是你要注意它不是指向A函数的啊,它指向的是一个空对象,看到没什么都没有的对象。好吧,它是一个对象,不是A函数啊,这个要注意了,它只不过是是通过A产生的一个对象的这个意思。
11:06
好,那么它只剩一个空对象,什么都没有的空对象,你看一个节省格式放在这儿是吧。好,那么这是六对我们A的这个影响啊,就是你通过前面加这个六会让它产生一个。这个。这个这个这个空对象函数内部this指向这个对象啊好,那么再一个影响是什么呢?啊函数。函数默认返回这个对象。嗯,还是默认返回这个对象啊,什么意思,让他看一下。一样的啊好,那么如果说我直接A直行。O等于A,执行好O。O是什么?哦,是个什么东西啊。里面的this是window or是个什么?函数执行结果给OO什么on find对吧?因为函数默认返回on find嘛,所以第一次打印window,第二次打印on find对吧?好那么这个时候呢,我们如果说我们通过六的方式去执行啊,我们可以来看一下啊,那5O等于6A。
12:13
来,我们来看一下,你看来刷新它会怎么样呢?第一个是函数内部的这次指向,因为A执行的吗?那函数内部这次指向指向一个空对象,第二个是返回,返回的也是这个空对象,发现了没有?发现了吧,对吧,比如说你看啊,我在这边写一下,那这点X等于。十是吧?好,那我们可以来看一下,这次点X等于十。是不是啊,我们可以在这边把这个cons放后面去啊,先给它加X,再加Z,首先你看是不是两个Z,是不是同一个都是X10X10啊这么一个对象。啊,函数就是六对我们A的影响,在来六对我们函数的影响,我们回顾一下,你看第一个啊,函数内部会产生一个空对象,函数这次指向这个对象,函数默认返回这个对象,诶,那就是我们的六。
13:06
做函数执行之前加六关键字会对我们函数产生的影响,这个咱们要记住了啊。
我来说两句