00:00
那刚才呢,我们对那个这个这个common JS规范做了一个这个简单的了解,那基本上使用其实呢,使用起来。非常的简单对吧,哎,非常简单,主要就是一个什么呀,Require,还有一个这个expose对吧?哎,Exp,那这里边我们还要再说一个问题啊,这里边我们来说一个零五还是Mo Du啊,Model GS,那说个什么呢?我们知道啊,那在这啊,假如说我定义一个模块啊,在这我来创建一个JS文件,来一什么呢?来一个hello mole hello,一个Mo,在这我定一个模块什么呢?我直接呢,哎,来一个expose,点一个name,等于一个孙悟空。然后呢,Expose点一个age,等一个这个18,然后expose点一个这个c name,等于一个function,这个方法呢,我直接在这来一个这个cancel,点一个log,诶这个诶我是孙悟空,随便写一个啊,那现在我们这个模块实际上向外暴露了三个东西,两个属性name,还有age,还有一个方法是c name啊,那我要用他们怎么用,先要引入直接挖一个叫一个hello吧,等于这个require require,我们是叫做hello model啊hello,然后我要用的话,比如说我想来一个hello,点一个name,诶然后呢,我们来输出一下,直接保存我们来运行,是不是就是孙悟空啊,哎,孙悟空,然后呢,我要用一个hello,点一个age啊,怎么写,这里边直接点log,然后摁下table。
01:49
出去自动就看到了啊,输于点log,然后table去这运行,是不是age就是这个18呀,然后你要调方法就是什么呀,Hello,点一个c name,哎这一保存。
02:03
我们这运行是不是就是我是孙悟空啊,哎,所以这是我们拈块虽然暴露的,你说我不暴露内幕,我不暴露了,这一保存,这孙悟空就是什么呀,就是安爹find,哎这都很简单,但是这里边我们说了,我们说其实我用expose跟用什么呢?跟用我这个Mo,诶买Mo model.xose实际上是什么呀?哎是一样的,这块效果是直接运行走你是不是一模一样啊,哎一模一样,那我们来说,那它有什么区别,有什么区别,那看着了,那有一些情况下,我觉得我这样model.ose一个一个来有点太麻烦了,太麻烦想简单的方式干嘛呢?我想一下导出三个怎么导,我直接Mo掉点expose等于一个,他直接干嘛,是不是直接等于一个对象啊,然后这个对象里我来个name name,来个猪八戒,然后呢?
03:03
啊,Age来一个28,然后来一个这个c name function,这里边我直接cancel.log一个这个我是猪八戒,那现在注意了,那我这种方式能不能导出,哎,我是不是在直接把一个对象赋值给mo.xexp这个属性啊,直接赋值我们来看效果,这一运行走,你是不是就变成猪八戒了?I变什么?那注意了啊,关键点在哪?此时此刻我如果把猫丢点与错字换成exp。还行不行,还行不行。还行不行?来,我们来运行一下,报错了两个find,然后告诉你hello.is not function这个还行不行不行了,那为什么Mo丢点expose就行,而我们这个expose就不行?
04:15
为什么?今天发不动。来,能不能想明白这个东西是为什么?其实不难,这就是一个我们这个基本这个引用数据类型的一个小的问题,那其实我们来看啊,Modu.ex和ex hot他们什么关系,其实我们无论是用expose还是用model.expose我们最终改的都是谁?改的其实都是model的exce的属性,能理解吗?无论用哪种方式,我都是为了干嘛呀,改它的啊,改它的它们关系像什么啊,看着我这来一个Y,一个OB接等于一个这个是不是一个空的对象啊,然后干嘛呢?我来一个哎,这直接OB接点一个,我来起一个什么呢?我来一个叫O啊OB接点一个A吧,然后等于什么呢?等于一个大块,这里边我这个OB接点,OB接是个空对象对吧?然后我给obj添加了一个属性A,这个A指向它是不是又一个空对象啊,然后呢,我这挂一个A,等于OB接点A。
05:25
看懂这意思吗?我又整了一个变量A,它等于谁?哎,OB接点A,那也就说现在什么,现在A和OB接点A它指向的是什么?哎,指向的是同一个对象,这能理解吧?哎,那我们现在来看啊,我这来一个cancel.log一个A等等于OB接点A这东西毫无疑问,我这运行的话,它肯定是什么呀,肯定是处啊,肯定是处,那我们来说如果干嘛呢?哎,如果我来一个A点内等于孙悟空这来看,然后呢,我直接来一个叫做OB接点A点内,然后我这输出,那问你,我现在注意改的是A的内幕属性,我问你OB接点A的内属性变不变,变变不变,变不变小。
06:25
哎,他俩现在指向的是不是同一个对象,是同一个对象,那我问你,我给这个对象里添加一个name属性,那个对象里有没有,是不是也有啊,哎,也有,所以这一运行我们来看OB接的点A点内变成什么,是不是也变成孙悟空了,为什么?因为他们两个指向的是同一个对象。这个能不能看懂,哎,好,那再看啊,看这我来一个A等于一个new一个object,好我现在看这我给A赋值了一个新的对象,新的对象A肯定变了,我问你OB接点A变不变,变不变,哎,我们这一运行。
07:12
是不是没变呀。而A的那个肯定已经。没了。直接运行是你的呀,这能看懂吗。能不能看懂,要有看不懂咱们赶紧说,咱们再把这问题再说一下,有看不懂的是吧,有看不懂的了哈,那咱们来说一下,反正这问题其实挺没劲的啊呃,这个问题啊,这个问题如果我要以这种方式去说的话,其实啊不太好说,这是我们一个基本数据类型,还有引用数据类型的一个问题,我们说了,咱们是不是说过这个叫做对应内存,还有这个占内存的问题啊哎,我们基本数据类型值,我们这样吧,我们先画个图。这个呢,我们来画一个图。
08:05
画什么图呢?画一个我们内存结构图,我们的内存他们简单来分啊,我们分成两个部分,一个叫做占内存。占内存呢,它特别像一个表格,表格分成一列一列,一行一行,为什么叫表格呢?因为有一列我们叫做变量,还有一列我们叫什么呀?值啊,一个是变量,一个是值,还有一个我们叫什么呢?叫做堆内存,堆内存我们放的是什么呀?是。是不是一大块儿啊,哎,它属于是一大块儿啊,那这我们画个图,这个是我们的什么呢?这是我们这个占内存,而这个是什么呢?这个是我们这个低内存。对内存啊,那现在我们来看到这个图了,我们来复制一下,我们先用代码来配合这个图,这个图这个内存是干嘛的啊,我把这段给它删了,咱们就当刚才没有过,这没有事情发生一样,是吧,咱们重新看一遍来我这来一个Y一个A等于十,然后我这Y一个B干嘛呢?等于A,现在我cancel.log一个什么呢?cancel.log一个这个A等于我加上一个A,然后我这复制来什么呢?B等于加上一个B,我问你这两个值是多少,哎,毫无疑问,这东西肯定是不是都是十啊,哎,都是十,然后在这我来一个A加加我是不是十,A自增了,那这时候A肯定变成了11,哎,那B呢,哎,B还是十啊,还是十,为什么?哎,因为我们基本数据类型的值与值之间是什么?
09:47
是相互独立的吧,哎,相互独立的,所以这东西在我们图里点出来什么呢?注意了,我们基本数据类型是保存到什么呀,占内存里边了,所以这画个图,我们来刚才这个代码什么意思,我先来一个挖一个A等于十,我是不是声明一个变量A等于十啊,所以它需要在站定给你创建一个变量A,然后这负值什么呀,十二十,然后再往下走来了一个A等A叫做什么呀Y,一个B等于A,我说让B的值等于A啊,那相当于什么在这整了一个变量B,然后值呢?哎,值是A的值,也就是什么呀,也就是十,那注意现在A和B都是十,但是注意这两个十有没有关系,哎,没有关系,值虽然一样,但是值和值之间是独立的,A的十是A的十,B的十是什么呀?B的好,那现在来注意了。
10:47
来一个A加加我是不是使A自增啊,A自增以后又变成几了,A变成11,它对B有没有影响,没有影响,听听懂吧,来,那我们再来说我们的对象啊,咱们把这东西再说一遍,学会的同学再看一遍,不会的同学好好听啊,好好听好,然后再看这是我们基本数据类型,然后再看我们的引用数据类型,我挖一个obj等于什么呢?等于一个new,一个object,创建一个新的对象,对吧,然后OB节点name等于个孙悟空,孙悟空然后呢,我挂一个OBJ2等于一个obj,然后现在我来CANL2个名字,一个是obj,我先写一个啊obj,然后呢,它等于我们加上一个OB接点name,然后我这复制一下来一个OBJ2等于一个OB接2.name,那我问你它俩的name属性一不一样,哎。
11:48
来来,我这运行一下,两个name属性是不是都一样啊?好,那现在看着了,我来一个obj2.name等于猪八戒,好,我问你OBJ2的name肯定变成猪八戒了,我问你obj的便便,哎,我们这一运行走,你是不是都是猪八戒呀?哎,都是猪八戒,所以这个在图里边怎么体现?哎,把这个图摘下来了,这块给它去掉,那我们这整怎么整的?先来了一个腕上一个obj等于new一个OB,那还是这出现Y了,Y了以后变量里边是不是多了一个obj呀?哎,变量里边多了一个obj obj,然后再往下看,Obj完了以后,它有一个new object,注意了,New要干什么?哎,一看见new就意味着它需要在我们堆内存里边创建一个新的空间,这个空间干嘛专门用来放我们这个什么呀?
12:48
对象啊,放我们这个镜象,那问题来了,这个对象在对应内存里,而我们变量在占内存里,他俩现在有没有关系?没有关系怎么建立关系?注意对象没有名字,没有名字只有什么,只有内存地址,比如说它一个地址叫做一个0X123,它是一个16进制的地址,那实际上在OB接里保存的是什么?保存的是地址,能懂这意思吗?所以在这儿会有一个箭头,是不是相当于有一个这个指针在指向我们对应内存里边这个。
13:21
对象啊,哎,指向这个对象,然后往下写,注意了啊,我这来一个OB节点,Name等于我简写了等于孙悟空,那注意了是在干嘛?我是往obg里加吗?不是吧,是往obj这个变量对应的那个对象里加吧,所以这个内幕应该是加到这个对象里的,叫做一个孙悟空,能懂这意思吧?然后再往下来写了Y一个OBJ2再等于一个obj,那这就相当有一个变量叫OBJ2,它等于谁?是不是等于OB阶的值啊,OB接的值是0X啊,123啊,OB2是不是也是0123呀?所以在这就又有一个变量,它指向什么?它们指向的是同一个对象吧?哎,同一个对象,好,那注意了,我来一个OBG2点。
14:22
Name等于一个猪八戒,那现在我通过OBG2修改OBG2的name为猪八戒,我是改OBG2吗?不是,我是改OBJ2对应的对象吧,把name变成了猪八戒,那问你obj变不变变,因为自始至终是不是一共只有一个对象啊,这是不是都是我们以前说的这些这些知识啊,这能听懂吗?这能听懂吧,好,然后我们来说一下,那再往下说又该干嘛了?哎,其实这个东西啊,我们一直在,哎喜欢举一个例子是吧?比如说这个像什么呀?我们说这个对象,我们说它就像一个这个乌毒娃娃,知道吗?乌毒娃娃就那个,就那个小燕子扎那皇上那个是吧?扎那乌毒娃娃,这乌娃是干啥的呀?比如说举个例子,比如说我这个谁坐我前边,前边我前边是谁安鹏飞是吧?
15:22
坐哪呢,这是吧,哎,比如说这我旁边这个安鹏飞同学坐边上呢,我每天干嘛呀,我每天看着都特别的特别的生气,特别的烦呢,特别烦的,但是我这个为人师表是吧,你说我我骂了一顿,我弄弄了一下,这很很不好是吧,那怎么办呢?想了一个招,哎,我从淘宝上买了一个小娃娃,然后干嘛呢?我在小娃娃后边贴上一个安鹏飞的这个生辰八字,哎,生辰八字,然后每天我早上起来,晚上睡觉头睡觉干嘛呀,我都扎一下,哎扎他眼睛。
16:04
他就眼睛疼,扎他嗓子他就说不出话来,扎他肚子就闹肚子是吧?扎他后边,哎,第二天痔疮就犯了,诶就是这么一个东西是吧?哎,那我问你了,我这个小人儿,我这个小人儿是安鹏飞吗?不是,它是不是就相当于我们obj这个变量啊,哎,Obj这个变量,那只是我通过这个变量是不是保存了安鹏飞它那个引用啊,引用什么呀,是不是就他这个生辰八字啊,能懂吗?我并没有扎他本人,而是通过这个变量是不是来操作他呀,能理解吧?哎,能理解,那这又是怎么回事呢?那比如说我们这什么呀,恨这个安鹏飞的呢?不是我一个人,不是我一个人,比如说还有这个,我们这个李明宇天天坐他对面干嘛呀,也恨他,他跟我一样也是不好下手是吧,不好下手,我俩还他也上了那家店买了一个什么呀,小人乌毒娃娃是吧?也把他这个生辰八字搞到了,咔往那一写他干嘛呀,他他他也扎是吧,也扎咔咔咔天天扎,那注意了,我们两个人这娃娃是同一个嘛,不是同一个,但是我们两个娃娃指向的是什么?是同一个对象吧,因为宝子是同一个引用,那是不是就相当于是这两个变量指向同一个对象啊,哎,好,李凌宇比我比我狠,直接把胳膊就给掰下来了,哎,变成杨过了是吧?人杨过了,那我们想想,他把胳膊掰下来了,那这个安鹏飞胳膊是不是就没了呀?那我问你,我这个娃娃对应的那个安鹏飞胳膊有吗?也没了,因为他们我这俩娃娃。
17:51
指向的是同一个人吧,同一个人,这就是我们说引用数据类型的一个特点,能看懂这意思吧,哎,好,那然后再看什么呢?再看啊看这了,我这还是这个代码,我这改了,我这来什么呢?我来一个OBJ2等于no obj2等于no,毫无疑问,OBJ2是不是肯定变成闹了,我要问你的是obj变成什么了?
18:22
Obj变不变?哎,OB街变,哎,我们来运行一下啊,走obj变不变,Obj是不是还是猪八戒呀?哎,OB街并没有变,那这又是为什么?画个图看这吧,我这来一个OBJ2等于no啊,Obg等于闹,那干嘛了?我是不是把OBG2这个值变成闹了,闹了以后我是不是相当于把我们OBG2和这个对象的连接给断开了,那问你它对OB接有影响吗?没有影响,这就像什么?
19:01
像我说我这天天扎这个这个安卫,我这突然干嘛呀,良心发现了。他们说这个杀人不过头点地是吧,天天扎人家,人家学生也没啥招你惹你的,你老扎人家干嘛?我烦我这什么了,我这良心发现干嘛呀,我把这生辰八字一接,把这娃娃就直接给烧了对吧?生辰八卦接了是不是我就不扎他了?但注意我不扎这个行为影不影响李玲宇他喳喳喳喳的是不是没有任何影响啊?同样OBJ2将自己设置为闹了,对obj有没有影响,没有影响,因为他们没有关系,没有关系了,所以注意,那这东西到底怎么区分?诶,那我问你,我OB尖二点和OB尖二等于啊,OBJ2点什么什么等于和OBG2等于它有什么区别?有什么区别,有什么区别?哎,OBG2点内这里我是在改变量还是在改对象,改对象吗?哎,我是在改OBG2对应那个对象的内幕属性,所以这个时候是在改对象,那我问你它对OB间有没有影响,这时候有没有影响,有影响吧,因为它们两个是不是对应的是同一个对象啊,哎,同一个对象,那现在看这我OBG2等于now,这是在改变量还是在改对象,改变量,我是把OBG2这个变量的值改成那那对obg有没有影响,没有影响能懂了吧?所以这块你要区分的就是它到底是在改变量还是在改对象,能懂这意思了吧?所以回到我们上边。
20:55
它这个问题那是不是一个道理啊,怎么一个道理?我们来看是上边我如果用的是model.x expose,我是不是在改这个变量,这个对象的expose属性啊,而我如果直接expose这干嘛,我是不是在修改expose这个变量啊,本来实际上expose指向谁的,实际上expose是指向我们model model.x。
21:28
Model有点EXEXP,但是现在我这一改它还是不是指向它的了,不是,所以这个能有用吗?就没用了,因为它是在改变量,而不是改对象,所以这个你要区分,你怎么区分,哎,我们说了ex expose,你要向外暴露内容,你只能通过什么点的形式,X expose点什么什么exp点什么,只能通过什么呀点的形式,而module.exexp你怎么办?你是不是怎么着都行啊,你可以点也可以什么也可以直接。
22:06
赋值能懂这意思吧,哎,所以这块注意区分到底是改对象还是在改变量,那这一块我再给你们去总结一下,我们叫什么呢?我们来说一下,诶,Expose和什么呢?和我们这个model.expose诶,Model expose它俩本质上是什么呀?是一个对象,那我们说了,我们通过expose expose只能干嘛呢?只能使用这个点的方式来向外哎,暴露我们这个哎内部变量啊,只能通过点的形式向外暴露我们这个内部变量,而什么呢?而我们这个猫的要给既可以什么呢?既可以通过点的形式也可以什么呢?也可以直接。
23:06
赋值啊,也可以直接赋值,所以说白了是model,就点ex expose,是不是更强大一点啊,哎,更强大一点啊,所以注意这块,举个例子,你上边ex expose指成什么呢?Ex expose ex expose点叉叉叉等于一个这个什么东西对吧?哎,等于什么东西,然后呢,而我们这个什么呢?猫点已错了,你也可以写model model.axportts点一个叉叉叉等于一个这个什么什么东西,或者你也可以什么呢?哎,点X等于一个是不是直接一个对象啊,哎,都行啊都行,那同学说老师我这我我还是伸不开。还区分它区分不开好办,记住了,你全用它就完了,因为它是不能用它啊,你要是说老师我就区分不开了,你就全都改成model,就点ex它你怎么用干嘛呀,怎么对啊,怎么用怎么对啊好,那这是我们说的一个,又把这个模方号呢给它大家细化了一下啊,那好我们这儿来停一下。
24:13
就先说这么多啊。
我来说两句