00:00
刚才呢,我们这块说了一种方案干嘛呢,把我们这个c name这个函数给它提取出来,那这样呢,我们说了,我这函数自始至终是只有一个呀,就不会有我们刚才说那个问题会一下子1万次就会创建1万个啊,非常占用我们这个空间,那这块呢,哎,对我们这个性能有一个很大的一个提升啊,就说提升了不少,但是这里边我们注意我这么写,它有没有什么有什么,有没有什么问题啊,有没有什么问题啊,诶刚才我们还说了是尽量不要往这个全局作用域里边,是不是去生命变量啊,哎,所以这块你要注意有一个问题,为什么呢?我们将这个函数定义在我们这什么呀,悬诀作用域中干嘛呢?它污染了什么呢?我们这个全局作用域的一个命名空间,什么意思?哎,命名空间命名就是什么呀,起名字这个空间。
01:00
这个这个这个空间啊,那这里边儿什么呢?我这名儿叫什么呢?我这不是有定义了一个全局函数叫。F fun呀,那我问你了,他叫f fun了,别人还能不能叫了,别人一叫F是不是把你这给覆盖掉了呀,诶覆盖掉了是不是就出问题了呀,所以注意它会污染我们这个全局的这个作用域的一个命名空间,而且这个问题其实还不关键,起个名倒无所谓,关键是什么呀,关键是而且什么呢?而且定义在我们这个全局作用域中,它的什么呢?也很不安全,什么叫很不安全,咱们先想想啊,我这个函数我放在全局作用域,刚才我们已经说了,你们说我们开发一个项目,他是不是就一个人开发呀,可能多个人开发啊好,你全局作用于定义函数叫这个f fun,那可能另一个程序员干嘛呀,他也对这个f fun喜欢干嘛呢,他也起了一个名叫f fun,当然他不是故意的,因为什么呀,他可能不知道你是不是用这个名啊,所以也起了个F,还是那个问题。
02:08
给他一起FU,你这还有没有了,你这是不是就没了呀,哎,是不是就给你覆盖掉了呀,哎覆盖掉了,那这一块怎么办呢?所以这块你要注意它是有什么呀,有局限的啊,有局限的,所以注意了还是一句话,尽量不要在全局作文里边写玩意儿啊,你写完了以后容易出问题啊,容易出问题,那这个东西怎么办呢?哎,那接下来呢,我们要说一个这个新的概念叫做什么呢?叫做一个这个圆形。原型是什么玩意儿呢?Script的标签,我们来说一下原型,原型我们叫做一个proto tap啊,原型pro tap,那我们先,诶原形啊,说这个原型之前呢,我们先来看看它什么是原型啊,什么是原形,来我们这来一个function function,我们来一个这个person,我这创建了一个函数,这是一个构造函数吧,哎,我们来说一下构造函数这个东西啊,我们说什么呢?在我们说我们所创建的每一个函数,首先要确定函数也是什么呀,也是对象啊,我们所创建的每一个函数,我们的解析器都会什么呢?都会向我们这个函数中添加一个什么呢?添加一个属性叫什么呢?叫做proto typeb啊,每一个函数解析器都会向函数中添加一个属性,叫做一个prob,那注意啊,我说这句话,有没有考虑它是构造函数还是普通函数?
03:38
只要是函数都会有这个prototype这个属性,诶那我们来看看他有没有怎么看啊,直接来什么呢?来一个这个cancel.log不就是对象的属性吗?对象是谁呀,是不是person呀,直接来一个person,点一个pro type,然后呢,我这一运行来走你。
04:00
是不是确实有啊,而且还是个对象啊,哎,不仅是person,还有谁呢?比如说随便写一个function,我们叫一个my class my class,我们来看my class.pro我这一保存,咱们来看是不是也有啊?哎,每个函数都有,大家注意了,Percent pro和my class pro它一不一样。不一样啊,它们是两个,所以你这来什么呢?来一个person,第二一个protyb,这两个一定是什么呀,False,每一个函数都有它什么呀,自己的那个proty啊,都是唯一的自己的,那这块这哥们是干嘛的呢?我们说了这个prototy这个属性,这个属性对应着什么呢?对应着一个对象,那我们说这个对象就是我们所谓的什么呢?叫做一个原型对象,一定注意pro tap,它就是一个原对象啊,原形对象来我们来干嘛呢?这P就不要了啊,直接拿这个malu来演示,来我们来干嘛呢?画一个图来把这个他们这个关系啊说明一下,这里边我们新建一个,把这块都给它清除掉,我来插入这么一个表格,这个表格呢,我来表示我的这个函数,这个对象,函数对象呢,我们来说一下我这个函数对象上边我给。
05:25
他来一个。合并单元格函数对象,我们叫一个my class,刚才我创建这个函数叫做my class吧,诶my class是我们这个函数对象,函数对象,函数对象里边有一个属性叫什么呢?叫做proto typeb,注意这属性哪来的浏览器解析析给你干嘛呀,给你加进来了啊,给你加进来了,然后在这我们来接着再插入一个这个表格,那这个表格呢,表示的是我们这个什么呀?叫做圆形对象。
06:02
这块也是横单元格,这也是我们这个圆型对象,那既然是对象了,我这块它应该是有一个这个什么呀,内存地址的,比如说这个地址就是一个0X123,那现在我这个pro属性它保存的就是什么呀,我原型对象的这个地址吧,诶地址就是说在我函数对象里边有一个属性,属性指向的是我们这个原型对象,而且每个函数对象是不是都有啊,而且每个函数的原型对象还是什么呀,不同的啊还是不同的,这一块能懂吧,那接下来说了,这哥们是干嘛的呢?哥们是干嘛的呢?我们来说一下,如果我们先说啊,如果我们的函数作为普通函数调用,这个proto没有任何作用,如果你这个函数就是当成普通函数调用的,这prote有跟没有是什么呀。
07:03
是一样的啊,是一样的,那接下来我们说那主要是什么呢?是不是构造函数,哎,当我们这个什么呢函数通过我们这个构造函数调用时,怎么叫构造函数呢?直接来一个,我这来一个Y一个MC等于什么呢?New一个my class,现在my class是不是作为构造函数调用了呀?诶而且通过它是不是创建了一个对象啊,哎,对象,那这个关系是什么呢?来我们还是画一个图出来,直接我一插入来一个这个表格们这个呢,给它多多来几个吧,诶这仨了。表哥。还是让它合并一下我们这个单元格,这是什么呢?这是通过我们这个MY,通过我们这个my class创建的这个对象,我们叫一个这个MCMC现在我是不是通过它作为构造函数来创建创建对象了呀?哎,那这里边我们注意了哎,当函数通过构造,当函数这叫什么呀,以啊,以构造函数的这个什么呀,形式调用时,也就是说你构造函数的形式调用是不是创建的对象啊,它所创建的对象中都会有一个这个隐含的属性,都会有一个隐含的属性指向什么呢?指向该构造函数的原型对象什么意思?我现在来看,我这是不是创建了,用my class创建一个对象叫做。
08:49
MC啊,My class里边有一个属性叫做pro,在MC,由于MC是通过my class构造函数线的,MC里边也会有一个属性指向这个什么呀pro,换句话说,MC里边有这么一个属性,这个什么呢?咱们叫做一个隐含属性,也就是说这个属性应该是干嘛呀,他不让他们看的啊,不让看的隐含属性也指向谁呢?也指向这个0X啊123。
09:16
来我这一插入它是指向它的,能看懂吗?你就说现在构造函数,还有我们这个MC里边是不是有一个同样的这个属性,指向的是同一个对象啊,诶同一个对象,那注意了,它是隐含的属性,一般不让我们看,但是浏览器它给我们提供了一个访问方式,什么访问方式啊,我们可以通过什么呢?通过这个下划线叫什么呢?Pro to来干嘛呢?来访问改属性啊,什么意思来看,那现在我们来看谁呢?把它住了啊,直接来一个cancel.log,一个MC点一个下划线啊注意啊是下划线,而且是什么呀,两个下划线啊,这看着一个,它是两个下划线,叫做叫做什么呢?叫做一个proto,诶你看这倒霉名你就知道它是什么呀,肯定是隐含的,让你轻易不能访问的啊,那这个我们来看一下来我这一保存走,你首先有没有有是不是也是一个对象。
10:17
啊,而且你注意这个对象和my class pro属性纸上的对象是什么,是同一个对象,来,我们来看看。CTRLC干嘛呢?是不是等等啊,诶,咱们来看E保存走你是不是处啊,哎,是同一个,那要注意了,不仅仅是MC,还有谁呢?我来一个Y,一个MC2等于一个new my plus,我是不是又创建了一个来MC20个嘛了,也有这个proto,它指向的也是这个to type来一个mcr,咱里保存走你是不是也是true啊,诶好,那咱们现在就看见这个名字了,叫什么呢?叫做proto,就叫proto,诶那现在我们来再复制一下啊,这个关系,我们再复制CTRLCCTRLV来一个这是我们这个MC。
11:09
二如果有的话,我可能还有MC三都是我们这个麦class那个什么呀,实力诶,他们都会有一个隐含的属性指向的是这个什么呀。是不是圆形对象啊,哎,指向的是这个圆形对象,这个你能看懂了吗?能看懂了吗?他们现在是不是都有这么一个同样的属性,指向的是这个圆形对象啊,哎,指向的圆形对象,那这圆形对象它它有啥用呢?有啥用呢?首先我们要确定一点,这个圆型对象包括我们的构造函数,包括我们这个实例,它干嘛是不是都能看见,哎,都能看见,那我们来说什么呢?我们来说啊,这个圆形对象。圆型对象就相当于什么呢?一个这个公共的什么呢?公共的这个区域,所有该类的什么呀,所有诶同一个类的这个实例都可以什么呢?都可以访问到这个什么呀,这个原型对象啊,所有同一个类的实例都可以访问到原型对象,所以MCM2 MC2MC3是不是都可以访问到这个prob呀?诶那我们可以干嘛呢?诶我们可以将什么呢?我们这个对象中共有的这个内容统一设置到我们这个原型对象中,什么意思来看原型对象是不是MC my class,点一个这个pro呀,来看着我来做这么一个事儿,像什么呢?像我们这个my class中天my class的这个圆形。
12:54
我们来添加一个什么呀,属性A,我就随便写一个属性A,直接来一个麦,像一个什么呀,对象里添加属性怎么填呀。
13:05
点pro tap.a是不是添加进去了,直接等于什么呢?等于一个1231保存,这能看懂吧?My pro是一个这个原型对象,我向这个对象里添加一个属性A,那这个关系在图里怎么体现出来?我这A是在哪添加的?是不是在这添加的呀,所以我这应该有一个AA的值什么呢?是123,是不是应该是这么一个效果呀,哎,这么一个效果,那注意了,我有没有往这个对象里评价,哎,或者换一句话说,我MC里边有没有A。MC里有吗?MC对象里有吗?没有,我要往MC里加,是应该是MC.a吧amc.a但是我没有去这么做,那我们来看看MC里现在有没有A,直接来一个cancel.log一个MC,点一个A,我这一保存,咱们来看效果一刷新走,你是不是123呀,但注意了此时MC里有没有A。
14:08
这有吗?没有没有,他干嘛了,他是不是去原形对象里去找了,哎,原形对象找了啊,所以注意叫什么呢,当。当我们访问对象的一个这个属性或者是或什么呀方法时,它会什么呢?会在会先在我们这个对象自身中寻找,哎,当你这来了一什么呢?你这来了一个MC.a先后台自己找一找,有没有没有,咱们说如果有怎么办,如果有是不是就使用了呀?哎,如果有则直接使用。如果有则直接使用,如果没有则什么呢?则会去什么呀?我们这个圆形对象中寻找,如果找到则什么呀,直接使用,所以你这来了一个MC.a的时候,他先干嘛?先去MC里找,MC里有A吗?没有A去原形里找,原形里有没有啊,有有干嘛给你返回啊,给你返回,那现在我们来看,我来做这么一个事,像我们这个MC中添加这个A属性,直接来个MC点一个A,等于我是我是MC中的这个A我添加完了,那现在我们来看,那这什么效果在图里怎么体现出来的。
15:41
MC里边是有一个A属性啊,属性值是我是MC中的这个A吧,那他先找找MC有没有A,有A还找不着原型了,哎,就不找了,所以我们这一保存咱们清空一下走,你是我是MC中的A啊,哎,我是MC中的,那好,我们来看MC2.a应该是啥?诶还是那句话,MC2里有A吗?没有A他去哪啊,去原形里找,原形里我这一保存走,你是不是就123呀,哎,123,所以你这块应该能感觉到了,原型是一个什么东西,原型实际上就相当于什么呀,一个公共的区域,所有对象是不是都可以访问到我们圆形里边的属性啊,哎,都可以访问到圆形里边属性,那现在我们来看那这块属性能访问到,那如果是方法呢?
16:31
来还是我们来干嘛呢?向我们这个my class的这个原型中干嘛呢?添加一个什么呀,方法添一个方法来一个这个my class直接点一个pro type就写一个c hello,诶等于个这个function,诶写一个function,然后这写什么呢?Alert一个这个HELLO1保存,那现在我们来看我MC里边有没有c hello MC里边没有吧,但是我这一调MC点一个c hello1保存。
17:07
清空一下,一保存是不是执行了,哎,MC里面没有,但是哪有啊,哎,原形里有,它是不是去原形里边去寻找啊,诶这个呢,就是我们这个圆形的一个特性,它就像一个什么呀,像一个这个公共区域,那我们可以干嘛呢?把这些共有的属性和方法干嘛呢?统一保存到这个圆性里,那这样我们说了,我问你我这A属性只有有几个。是不是只有一个呀,但是所有对象是不是都可以访到啊,我say hello,这个方法有几个,也是只有一个,还是那句话,那是不是所有的对象都可以访问到啊,而且干嘛呀,它会不会污染到我们这个全局作用域,不会,因为它不在全局作用里边啊,在什么呀,在我们这个属性里边啊,诶在这个pro这个原型,这个对象的一个属性里,所以那你再回到我们这个构造函数,那这个东西我们可以怎么改啊?
18:00
诶,这方阵我就不这么写了,我来干嘛呢?哎,那这我是不是也不用写了,哎这也不用写了,直接干嘛呢?像我们这个原型中,哎添加我们这什么呀?哎叫做一个C内方法,怎么添加,直接是我们这个person,点一个pro typeb,你要搞清楚是往谁的原型里添加,你往person就是person,你往这个MY就是my class,然后再点一个C,诶name等于什么呢?直接把这个方式给它复制过来,然后这名呢就不要了,这样是不是就OK了呀?哎,那这样什么特点呀,这样我们说所有的这个对象是不是都能访问到了,其实跟刚才呢,没区别啊,没区别,我这运行咱们来运行,大家好,我是孙悟空。大家好,我是孙悟空,孙悟空猪八戒是不就出来了,哎,就出来了啊,所以这一块就没有问题了,而且还是干嘛呀,既可以确保我们的函数只有一个,而且又不会影响到什么呀,我们这个全局作用欲啊,全作用欲,所以这一块注意了以后像有这种东西什么呀,在每个类的对象里边都需要用的,可以干嘛呀,统一添加这个原型里,而且它还有什么特点呀,你说我虽然原型里有了,但是我如果不想用行不行,你是不是写一个你给它盖住就行了呀,哎,你自己有了它是不是就不看原形了呀?哎,不看原形了啊,所以注意你们说以后我们这个创建构造函数中,构造函数时可以什么呢?哎,可以将我们这些所有将这些什么呀,将这些对象共有的什么呀,属性和哎方法统一什么呢?统一添加到我们的什么呀,构造函数这个原型对象中啊,统一添加到。
19:52
构造函数的原型对象中这样什么呢?这样不用分别为每一个这个对象添加,也不会影响到我们这个全局作用欲而就可以什么呢?就可以诶使每个对象都具有这些什么呀,属性和碰跑了啊,所以注意原型什么作用就是干嘛的,就是让我们干这个事儿似啊,就让我干这事儿以后我们会发现我们用一些对象,这些对象里边这些属性啊方法呀,实际上我干嘛呀,我并没有添加,但是我发现干嘛呢,我却可以用,那这个时候你就知道这些属性,这些方法在哪呢?哎,在原形里头啊,在圆形里头,好,那这块呢,是我们说的一个原形对象,我们先停一。
我来说两句