00:00
来咱们接着再看,那再往下呢,我这块啊,我再去定一个别的类啊,比如商品product商品啊product function大一个商品一般都会有什么呀,商品的编号,商品名字,商品编号,商品名字和价格对吧?P number p number p p。Price price,这是不是属性,再来一下,再往下我们能不能定一点函数啊,一个类当中可不可以定函数放这了啊,第一次这样写啊。注意看啊,Get。Function return price。这个this代表谁当前对象啊?
01:02
那我遛对象怎么遛啊?遛一个什么product,遛完之后这个product p number的111商品编号,商品编号,比如说西瓜商品的一个单价是。四点么?Get pressed返回个什么?Priceman这个是几,因为你4.0传给了他呢,又给了他对不对,然后get price的时候this点。是不是就是他呀。4.0,这是个函数,各位啊。这是个函数,来,接下来我们再刷新一下,走一个走一个走走走走走走走走走走走走四。
02:05
对吧。这是属性,这是函数,更神奇的注意看我们可以通过什么proto这个属性来给类动态扩展属性以及什么函数,什么意思呢?Product。Proto p等于。能看懂吗?来pro是谁?
03:00
我说呀,这个类当中啊,有一个什么属性,Pro这个属性对不对,类当中有,类里边都有这个属性,懂什么意思吧,所以在这里呢,我就直接类名是product product是什么?是不是这个商品这个类啊,这个类点product有这个属性吧,可以给通过这个啊,可以给这个类通过这个啊,可以给这类听清楚,可以通过proto这个属性,可以给这个类动态的扩展属性以及函数。我现在扩展那个函数叫什么getp内,看懂了吧?好,接下来我们能调用吗?调用后期扩展的什么get的什么P内函数,哎,这是个函数,你懂吧?诶,那这个pro RO已经扭出来了,在这能不能调这个get p呢?
04:06
行不行?你看啊,是不是已经扭出来了,扭出来之后再往下是不是给了一个类扩展了一个函数叫get版,然后我pro是不是出来这个商品,或者叫西瓜也行,西瓜啊西瓜点get。那再往下是西瓜点。习惯叫watermelon是吧?来我们刷新一下啊,走走走走走走走走走走走走走走四啊四是谁这个往下是不是给它扩展了一个函数,调这个get get p函数调完之后大家看是不是拿到了。
05:01
对不对。好,各位看好了啊,有意思了,能不能听懂?看这里有一个字符串叫string,对吧,那string我问大家可不可以给string扩展函数。怎么扩展点什么proto点。随便吧,随意啊,这是给这是给string类型扩展的一个函数啊,叫做随意,那现在我字符串有个叫ABC点什么随意。
06:00
这是一个字符串。能不能掉?这个重要吗?太重要了。他可以给JS当中的任何一种类型,你想给他扩展什么都可以扩展。扩展完我就用字符串对象能调调用你扩展的方这个函数来走一个走走走走走走走走走走走走走西瓜西瓜西瓜后边是。这个是不是执行了,这个为什么会执行。因为这调用了,用什么调用呢?用一个字符串,为什么字符串可以调这个,因为字符串扩展了这个函数。这个在Java中是没有的啊。
07:02
这个在JS当中,他这这方面是很牛的,是非常非常重要的啊proto台。行了,那在JS当中关于一个类的什么定义,各位我就说到这啊,一个类的定义啊,怎么去创建对象啊,一个定义类怎么去定义类,怎么去创建对象,创建完对象之后怎么去访问,你看可以通过这种叫做中括号的这种方式可以访问,也可以通过什么点的方式可以去访问,另外呢,还有一个语法,就是根据pro这个属性,可以给这个类型动态的扩展属性或者是函数。这都属于基础语法,各位啊,我们把基础语法给他背足了之后,后边我们再写别的东西就好说了,现在当然学这个东西很枯燥了,对吧,你现在有效果吗?有什么功能吗?没有,所以这块呢,其实比较枯燥啊,比较枯燥,但是这个知识点你得会,你得知道啊得知道。
08:06
嗯。这个不用写分号啊。JS中的这个语句可以不写分号,这个我第一节课的时候就说过了啊,可以写也可以不写,都行,那这一块呢,咱们再来对比一下这个Java语言怎么定义类,怎么创建对象,在Java中啊,Public class user是不是,你看结构非常清晰啊,Private类型的username对不对?然后private类型的什么呀,Password,然后再加一个什么呀,构造方法user对不对?诶,无餐的完了再加个什么有餐的是不是好,那through什么username,然后three,什么password,好,接下来在这写什么就行了,this.username username是不是好,那接下来再往下就是this点什么呀,Password password呗,是不这样的,好,各位你思考一下这个S跟它的区别是什么?JS语言怎么定义类,怎么创建对象,它创建对象没什么太大区别。
09:11
User user对象等于new一个什么user调无参的也行,怎么着,哎,User user等于new user调有参数的是不是也可以对吧?这边用户名跟上去一个,比如说李四,然后密码这边呢,我们跟上123,这就是对象创建出两个呀。你JS语言怎么定义类啊,屡屡user function function是不是,然后怎么着,这写什么username,谁password,这怎么写啊,这点什么username username吧,好,这点什么password password吧,我们觉得这个应该对比一下啊,来各位就不用了,这一点是不是代表了上面所有的东西。这个对象无非这样啊,好,我给你这样六行不行,好这样拗带一个参数张三行不行,来这个地方再拗,拗的时候我带两参数张三123行不行。
10:12
来告诉我,JS里边定义类创建对象,为什么这一个函数可以当三个函数用?在第一节课我就跟你说过了,JS它是弱类型,这个函数里边如果有两个参数的话,我能不能不传,我传一个行不行,我传两个行不行?所以这一个函数是不是代替了上面这两个,你看这个无参写出来,有参的是不是也得写出来,在Java里边对不对?而且在Java中的语法比较繁琐,为什么这么说,大家看啊,Java的语法是写了一个类名对吧,构造方法方法名是不是也写上了,但是呢,最后呢,Java呢,告诉我们的一个语法规则,什么规则构造方法的方法名必须和类名一致。
11:09
我听了这个语法之后,我就感觉这块有点废话。既然是这样,为什么要让我们定义类?定义类,还定义它干什么?构造方法的方法名不就是类名吗?为什么让我们写两遍?对吧。有道理啊。加法中定义类是不是你类名得写一遍,构造方法的方法你还得写一遍,然后最后告诉你构造方法方法必须得和类名一一一样。你是不是感觉上当了?是不是?写多了呀,那既然一样让我们写一次不行吗?为啥让我们写两次?你看JS做的非常棒,JS只写几次,一次这个东西既是什么?
12:07
既是类名,同时又是什么构造函数的函数名?多简略。构造函数还不用写了,为啥你写这一个还代表三个?对不对,好。Java中定义属性是不是还得单独写出来,属性下边是this.this点啊这个S不用。这一切归功于JS是一种弱类型语言。因为Java语言它是一种强类型,所以这个变量它在定义属性的时候必须手动指定这个属性的什么数据类型。是什么类型?听懂了吗?在JS里边它是弱类型,所以根本就没有类型,听懂了吗?没有类型你就可以this点就完事了,这点就行了,它和它就是这个类,就就是这个对象的两个属性,它不需要指定类型的。
13:08
听懂了吧,啊,所以说你看这S当中的这一点代码听清楚啊,这一点代码代替的是你Java当中的这一堆。你想想这一堆里边你干了一件什么事?一定义了类,类别叫啥user,第二件事你定义了两个属性对吧?第三件事你定义了两个构造方法对不对?好,我们数数这里面有没有定义类,类边叫啥user,这个类里边有几个属性,两个属性。这个类有几个构造方法三个。一个什么无参的一个什么?有一个参数的一个是什么,有两个参数。如果说您这两个语言要对比着学的话,我觉得你Java转型做JS的话也是很容易的。
14:03
对吧,有老师,那你这说了半天,这个Java的语法不行呗,错,Java强类型语言只能这么干。你去掉。你去掉这个是啥类型,这是什么类型不知道啊。你类型不一致,你能复制。付不了,所以你这个只能把这个类型怎么着定出来。对不对。所以说这块呢,其实啊,它就是强类型,而这个呢,其实就是因为它是什么弱类型导致的,导致的语法就是这样。很简单。啊,写出来就完事了。另外这里呢,我再强调一下各位,在这里最重要的就是它了。
15:02
我不管你会不会定义类啊,你会不会拗对象,这个事儿咱都是次要的,因为你后期真正去定义类,真正去拗对象的机会还是少的。还是少的,哪个比较多,这个。就是我们不断的给这个类型干什么扩展。扩展之后,我们可以用这个对象去调调与扩展的东西。好了,那这样的话到此为止吧,各位,咱们ES版本之前的种数类object这个类型我们就讲到这儿了啊,就讲到这。
我来说两句