00:00
还是就着我们昨天那个这个构造函数来说这个问题啊,昨天我们这写完了构造函数了,但是你们写完那构造函数,诶有没有发觉到这构造函数还有没有点什么小的问题呢?哎,有没有小的问题呢?所以你们一定要注意啊,我们干什么事儿的时候,就是包括以后我们到工作的时候去开发的时候,我们说了,我们做一个东西有没有可能我一次性就把这个东西做做的非常的完美啊,不可能,所以注意我们开发的时候,我们的项目都是有一个什么呀,都是有一个迭代的过程的,比如说你做的项目我们是不是都有版本号啊,可能我第一个版本是什么呀,能叫1.0,然后呢,第一个版本做完了,我说要对它进行优化,可能变成什么了,1.01对吧,然后我再优化可能就变成1.02,也就说我们项目是一个不断在什么样优化的过程啊,不断的优化过程中,同样呢,我们在学习一个知的时候也是。也是这样,哎,我们说一次性把这知识全都学会呢,不太不太现实,所以干嘛呢,我们一次学一点,一次学一点,然后一点点是去进步啊,一点点进步,同样我们写一个东西,我们要看看它有没有什么缺陷,有没有什么问题,来我们这来干嘛呢?创建一个这个person,这个构造函数,我们回顾一下我们昨天这函数怎么创建的,直接来一个function,名叫person,哎,大家忘写一点构造函数的首字母都是大写的啊,都是大写的,然后呢,这里边我们需要传几个参数,Name age,哎,旃的这经底啊,但是你写啥都行啊,根据你的需求去写啊,然后呢,我们这来一个this.name等于name,诶,注意啊,这this可不能省略你THIS1省略这玩意儿就废话了,Name等于name,什么玩意儿是吧?哎,什么玩意儿啊,所以这块一定注意是z.name z.name什么意思啊,是我要把这个name添加到我新建的那个对象里啊,对象里z.name。
01:57
那么等于name this.age等于age,然后是一个this点,哎,等于沾啊等于沾,这是我们说创建了一个对象,哎,添加了三个属性,然后呢,我们来向我们这个对象中添加一个方法,直接来一个z.c name c name呢,我们来等于一个这个function,等于一个function呢,我们这来一个诶,Alert alert一个什么呢?Alert一个诶,Hello,诶,咱们直接写吧,乐一个哈,Hello hello hello hello,大家好。
02:37
呃,然后我是,然后呢,加上一个这个什么呀,z.name是不是写这么一句话呀,哎乐啊,咱们来看效果啊,咱们来看效果这东西写完了,然后呢,我们通过它来创建一个这个person的一个实例,创建一个这个哎person的实例,我们创建直接玩一个这个person等于个new一个person,诶然后里边我来写名,我来一个这个孙悟空,然后年龄来个18沾的来一个男,是不是创建了一个对象啊然后呢,我直接来一个person,点一个c name,然后我一保存走你诶hello,大家好,我是孙悟空是不是出来了,然后呢,一个不过瘾,我再创建两个来一个PERSON2 person2改一个,改一个这个猪八戒,猪八戒呢28也是男,然后呢,我再来一个person2.cm,这应该吗?听完了是不是,哈喽,大家好,我是抓戒了,诶你调谁呢,就出的谁的名字,那这一块呢,我们来看这个子函数有没。
03:38
有什么问题,首先呢,诶这仨属性其实倒是问题不大,我们主要看什么呢?我要看这个方法,我要看这个方法我们来说一下啊,一边写一边说,在我们这个P这个构造函数中,我们什么呢?呃,为每一个对象都添加了一个什么呢?都添加了一个c name方法,每一个对象都有对吧?诶我person有,PERSON2有,但是我有PERSON3 person3里边是不是还有啊,PERSON4PERSON5PERSON100是不是都会有啊,哎,都会有,但是你要注意了,我现在这个方法是在哪定义的?
04:21
是不是在构造函数内部定义的呀,怎么说目前我们的这个方法是在我们这个构造函数内部创建的,也就是什么呢?也就是我们的构造函数每执行一次就会什么呢?就会创建一个新的什么呀,C name方法,每执行一次都会创建一个新的这个c name方法啊,也就是什么呢?也就是我们这个所有实例的什么呀的c name都是什么呀,都是唯一的什么意思?我们来看person有c name person2是不是也有c name呀?我们来看person点一个c name,我这一保存它是孙悟空,PERSON2就是什么呀,猪八戒,诶,那我问你person c name和PERSON2的c name。
05:21
它是一个吗?是一个吗?诶我们来看看怎么看呀,直接cancel.log一个person点一个C内等于一个2.c内,我是不是比较这两个对象是否相等啊,哎,两个等号是否相等吧,然后我这一保存走你什么玩意儿false,也就是说他们是两个对象吧,为什么是两个,因为我构造函数每执行一次是不是就创建一个新的呀,每执行一次就创建一个新的,这能理解吗?哎,那也就说什么呢?也就是那怎么说呢?诶那这有什么问题啊,这样就导致了什么呢?我们这个构造函数执行一次就会创建一个新的这个什么呀,方法执行什么呢?执行1万次就会什么呀,创建1万个新的这个。
06:21
方法吧,诶,也就是说我有1万个person对象,我就有什么呀。就有1万个,诶我同学说了1万个就1万个,这也没啥问题是吧,我们先说创建1万个,它也没啥问题,但是注意这1万个都是什么呀,是不是都是一样的呀,而什么呢?而我们这个1万个这个什么呀,方法都是什么呀,一模一样的,也就是说我们创建了大部大量的这个一模一样的方法,只为了实现什么呀,同一个功能,而我们说了我有没有必要创建1万个呀。有没有啊,哎,我们说这是完全什么呀,完全没有必要的,我们完全什么呢?完全可以什么呢?可以使我们这个所有的这个对象干嘛呀,共享是不是同一个方法呀,哎,同一个方法这能理解吗?就像什么呀,就像我们来。
07:19
学校上学,那假设我们说了,我们学校说了,我们假如说学校有,学校有5000人干嘛呢?我给这5000人一个人配一个厕所。那这是不是要封啊,那可能我们这个厕所比我们教室还多了是吧?诶厕所比我们教室还多,那这块有没有必要啊,没有必要,完全是不是占用我们大量的一个空间呀,哎,然后呢,那其实我们想最好干嘛呀,准备一个有点少是吧,你怎么着也得准备两个,一个男厕是不是一个女厕是不是就够了呀,但是注意啊,咱们当时说人这个还跟这台不太一样,为什么呀,因为咱们人这个比较慢是吧,比较慢,但是它这个呢,我给你想,我创建1万个方法,1万个什么呀,一模。
08:03
一样的方法有没有必要?这1万个是不是占用我这个内存很大的空间呀,那我一想这方法既然都是什么呀,一模一样的,那我干嘛不让他们共享。同一个呢?首先这个问题能理解了吗?哎,那现在我们来说怎么去解决这个问题,怎么解决问题。问题的关键是什么?问题的关键现在就是我构造函数调用一次,我这函数是不是就创建一次呀?诶那关键就是我这函数是不是在构造函数内部去定义的呀?诶那我一想它干嘛呢?诶我给它提出将我们什么呢?将我们这个c name方法在什么呢?在我们这个全局作用域中定义,直接往这CTRLX,然后CTRLV我这一粘,然后呢,咱们随便给它改个名,我这就叫一什么呢?就叫一个f fun,那现在注意了,这个函数我提到哪来了,是不是提到我这个全局作用域里边了,然后呢,我来一个z.c name等于方,你来看我将这个函数定义到这个全局作用域中,然后什么呢?将这个函数是赋值给这个Z点谁没了,那我问你了,现在我们说即使构造函数执行了1万次,我C。
09:30
这的方法还是只有几个,是不是只有一个呀,因为我在外边定义的它是不是只会执行一次呀,哎,但是所有的对象,实际上它们指向的都是什么呀,都是同一个啊,都是同一个,那现在我来看啊,那现在我问你percent.c name和percent2.c,它现在是不是一个,诶我已保存走,你是不是就是处了呀,哎,就处了,而且虽然是一个,但是它的什么呀,它的运行效果是一样,一保存孙悟空。
10:00
抓键是不是效果都是一样的呀,哎,那现在呢,他们就是什么呀,掉的是同一个函数,而不用再干嘛了,一人准备一个,那这样呢,对我们这个性能是有一个什么呀,非常非常大的一个提升的,对我们的空间呢,是一个非常非常那个大的一个节省的,但是注意了,这么写虽然行了,你要想一下这么写它。就行了吗?有没有其他问题呢?哎,我们这儿呢,先停一下。
我来说两句