00:00
大家好,我是学习园地的特约讲师高国峰,上节课呢,咱们看了解剖赋值和呃,三个点的扩展运算符,那这节课呢,我们再来看一下,在ES以后和我们加了一个类的概念。因为在ES5之前,我们都说加vascript呢是基于对象的,很少有人说是面向对象的,因为呢,他没有类的概念,所有用到的东西都是对象是这样的,那在一六呢,给我们加了一个类的概念,这样的话,我们在声明和声明对象的时候,声明类的时候,那我们能很方便的去声明,就跟其他的语言是几乎是一样的了,比如说跟Java呀,PP啊,Python呢,几乎都是一样的了,那我们学起来更通用了,那更顺手了。所以呢,在新版里边我们加了一个这样的一个类的概念,来我们看一下比较简单啊。特别是如果你接触过其他言的话,会觉得这个是比较方便的。我们还创建一个文件,叫做plus,这样来我们加一个,那我们再来稍稍了解一下在ES6之前我们生成对象怎么证明的,那我们随便做了一个方法person,我们有可能就管它叫做构造方法,对吧?然后我们创建一个对象,比如说呃,Let p等于new person,这是可以的。
01:10
随便声明方法就叫构造方法对吧,那在这个方法里边呢,我们还需要声明什么声明,比如说假如说这块有参数。当然我们这里边如果什么都没有的话,创建完对象之后,可以P点儿名字,就可以直接往里加,对不对,然后P点什么什么属性可以一点点加,但是这样的呢,给别人感觉不直观对吧。那咱们还有另外在以前的声明的方式呢,比如说通过这个方法,我们重新参数内容啊,年龄啊性别啊,然后我们这里边直接这点名字啊,等于传进来的,那这次这次就代表本身的对象嘛,对吧,年龄等于传进来的年龄,年龄这次里边的性别等于传进来的性别,这样的话我们就可以创建了一个,呃。一个构造方法,并对这里面成员属性进行自化,对吧。然后呢,我们还可以在这里面加方法,比如说X里边说话的方法等于action一个逆行方法,在这里边创建一个说话的方法,对吧,这里边比如说打印。
02:10
啊,那点log。连log你就随便打印一下啊,然后这里边可以加很多的方法,比如说I行走,行走的方法,人可以走路的一个方法,对吧?加什么都行,然后我们创建对象,就可以调用对象里边的方法,在这里边的也可以初始化,对不对?这里边名字我们比如说张三对吧,年龄十岁,性别男。就可以这样,然后可以调用P里边的方法,这是以前对象的一个,呃,声明对象的一个方式。用那个来我们运行一下。哎呀,张单就拿出来了,这种声明不仅繁琐对吧,而且呢,我们不好理解,它既是反函数,那我们又管它叫构造函数,对不对,很繁琐。而且还不好理解,那我们新版声明那就方便多了,就跟我们其他语言都是类似的一种方式,怎么声明呢?我们这样好啦,通过这个类关键字声明一个类,所有人都具备这样的一个一个方,就是所有声明相当于一个人类,对不对?然后我们就可以用这个类创建对象了,对吧?比如说Co证明一个P等于6p s person就可以了。
03:25
这就相当于一个类一个类的标识,而不像上面那个界限划分不清楚。然后我们可以看p.log打印一下,当然这个对象现在是什么,是空的,里边什么也没加呢,对不对?空的对象,但是呢是可以传对象了,那里边我们就可以加,比如说我们想对属性不出值,那就有一个显示的一个构造方法了,我们叫做con这个。用不用加它呢,Action呢,你看可以不加在类里边,声明方法,你可以省于直接加这个就行了,假如说我这里边同样这上面一样,比如说名字性别,年龄,性别构造方法可以存参数,也创建对象的时候,我们在这块可以存参数的,比如说张三对吧,20。
04:07
来。这样然后呢,不给他成为属性就可以这样,这点name等于传进来的name,这点年龄等于传进来的年龄累积,然后这一点性别等于传进来的性别。就可以了,然后这里边。我们可以嗯加多个方法,多个属性多个方法嘛,那构造方法呢,是创建对象的时候对吧,创建对象会自动调用给我们产新属性数始化,那比如这里边进行一个说话的方法,不用加直接加就可以,很简单对吧,然后这里边比如name.log打一下,然后呢,嗯,这里边一个加this点啊,然后这点年龄点log,反正这个这点性别点log.log印。来,我们看一下这块,我们不光是打印这个PD线,我们在p.ay打一个说话方法。
05:00
我们刷一下看,这是打印整个对象的值,要打印这些方法,所以呢,这跟其他的语言声明是一样的,所以大家要知道一个细节。构造方法的写法和里边方法的写法,我们这么这是正常我们写的一个方法不一样,那这么写你看行不行呢,买家。我说错了,对不对?所以呢,我们可以这里面可以怎么写呢?除了这种写法,这是简写的,我们可以比如说啊Z点以,然后用这种方法等于action,你看这样呢,跟原来的方法是一样的,但是呢都比较麻烦,对不对?所以最简单方法就是什么?就是直接写的方法名就可以了,一样可以带参数,你想带什么参数就带什么参数,这就是我们类的新的一个定义方式,跟其他语言是一样的。那如果在以前的方法中,那我们在写继承的时候。能继承,但是继承也很麻烦,对不对,那在我们,呃这个里面,也就是ES6里面给我们加了一个继承的一个关键字,就可以对上面内进行扩展,比如说last成为一个student生为一个学生,对吧,我直接看继承person,那就把什么,就把person里边的所有的方法都继承过来了,所有的方法都继承过来了,你比如说这里边,嗯,里边也有什么,也可以写构造方法,Con构造方法对吧,这里边也是名字年龄。
06:21
性别对吧,假如说他加一个学校所在的学校加这个吧,你看默认用super super怎么着调用超类的构造方法。默认调用超累沟的方法,所以呢,超滤的方法也需要三个参数,那我把这个名字,年龄,性别用超类的这三个方法去继承去,呃,初始化,然后呢,这里边我再加上自己的学校,那就是这点sol等于。这个学校sol学校。啊,就可以了。这是传递的参数赋值,那这四个值相当于全赋值了,属性都记中过了,说话方法也记中过来了,那说话方法里边,呃,没有加什么,没有加所在的学校,那这块我就不用了,用什么student student这块,那我加一个学校,比如说学习园,然后我们一样打印这个学生,你可以把电证名换成S和S。
07:19
S。S点说话都没问题,继承,然后这里边呢,也可以写自己的方法,你比如说啊,也可以把上面方法覆盖,比如说I学生可以有学习吧,啊to学习的方法,这边我们比如说打印一下,这里边这点S学校在哪个学校学习对不对,点到这样,然后我们这块调用他的说话方法,再调用它所在的学校方法。嗯,不是学习的方法这块。我们运行一下。看一下啊,一样的是可以打印出来的。是不是比我们传统的那种要方便很多,而且好理解很多,特别是你学过其他语言,在现在这些Java跟其他语言几乎是一样的了,就没有什么难点了,是这样的。
08:06
那除了这些呢,大家记这些就可以了,这只是面向对象的思想在基础你肯定有掌握,就不多说了啊,只是写法上一个改变,比原来既方便又好理解。那么除了这种方式,那我们对在我们呃ES6里面对阶层对象有了一个新的一个呃应用,比如说。我们接触对象,我们先看一下简写方式,什么叫简写方式啊,你比如说我们声明一个对象啊,声明一个OG一个对象,我们用大炮,这是声明我们的阶层的格式对不对?我们通常前面是变量名,当然最好加上字算啊,比如说张三。对吧,然后。啊,多个用逗号隔开年龄。十岁对吧,性别。嗯,30就级应该是难几啊这样,然后obj点到我们看直接看一下这个对象的结构,看一下直接看一下对象结构是没问题的,对不对,那什么是简写呢?比如说Z名字,我这块声明一个啊let name等于什么,等于第四等于李四你看啊,然后呢,Light身为一个年龄A1。
09:15
等于嗯,是30这样的一个情况,跟那个原来不一样了,我现在把这个变成我这个变量name看到了吧,年龄这块用AGE1这样的一个情况,那我们现在改这个对象。我新下你看李四30是没问题的,是可以变了,那它简化在哪呢?如果你名字和后边这个变量用的变量,咱们这画面开发的时候经常会这样用,对吧?因为所有的阶乘格式都是键和值,键和值,这个值可以是数组,可以是方法,对吧?可以是其他的对象都可以,对吧?但是如果是变量的话,这个变量和前边的命名如果是相同的话,那么我们就可以省交后边留一个。他既代表name退回来啊复制一下。
10:03
复制一下这个作用和上面的是一样的,它就跟这个是一样的,来我们看一下可不可以。名字可知。那还是一样的结果。所以呢,在后边学习框架的时候,那经常会用到杰森里边为什么只有一个变量,它是键呢还是值呢?它是键和直的合体,对吧,如果这个也是一样的话,那么我们这块就直接这样就可以了,如果性别再有的话,跟这个也是一样的来。能算进价,但是不一样的,你比如说刚才我A1对不对,那这里边你用起来,那相当于A就是什么,它就是一个变量,没有值就出错对吧,A没有定义。所以呢,就定义这个,它会找跟他同名的变量拿过来做为变量数值,那除了这个,在这里边我们在声明方法的时候,在说明方法的时候,比如说ru,嗯,Ay说话的方法,那我们也可以直接这么去写了大括号。嗯,这样吧。
11:00
冒号。你直接这么去说明一下啊,看一下这里边儿。嗯,这是点name.log。看一下你直接去这么写这个名称。刷新。你看ay是一个方法,我们能能调用呢,看一下OD节点,Ay要用这个对象里的方法,接成对象的方法,你看一下,你看李四就获取到了,对吧,也是相当于那个简写,其实呢,它就相当于什么ay冒号,然后function这样function这样的一个方式,这种方式它也可以直接简写成在这里边写个方法,所以呢,你可以在以后在接层对象里边,如果是一个方法的话,方法名就想作为一个接分对象的一个名的话,直接这么写就可以了。所以这是杰森里边简化的地方。你看这词里边属性和值,名字一样可以简写,方法一样可以简写。所以我们经常在层对看,这就不用说冒号,然后发什么什么的,很方便啊,另外呢,一个对象我们是可以串行化的,什么叫串行化的。
12:02
这是一个阶层格式,阶层的是Java块的对象的一种格式,对吧?那这种格式我们如果想在网络上传输,从一个页面传到另外一个页面。对吧,要么往数据里保存。我们怎么办呢?这种格式是不容易在往传输的,在往传输的时候,或者是往硬盘里保存的时候,通常我们就用字符串,那串行化的目的就是什么,就相当于把那金身变成字串,咱用的时候呢,再给他转回来,你比如说就这个。呃,接对吧,我们先不再打印,不再这调用,我们先看串行化,串行化的意思就相当于把我们这个对象转成什么,转成字符串,反射形化呢,就将这个字符串转换成什么,转化成接送对象这意思OB接点我们找一下那个串行化的方法是啊,String s tr。Ing。没有,等下接收一下变成一个字串,Str变成自串。
13:01
Obj OBj.TG。这个它提示这还比较长。拿过来。啊。嗯,诶,它不是它不是这个,它是杰森内的方法说话没提示j son杰森点使用这个啊使用这个。因为他不是说这个对象直接转换,它是由杰森里边给我们提供的方法,杰森里面提供方法,那我们传一个obj这个对象,那我们就把这个对象给我们串行化成字符串来,我们S tr.OG对。对,来我们打一下,看一下能不能给我们变成块你看。看上去还是这个介词,没什么变化啊,嗯,Str前面没有用说明了打印的这个先这样吧,那我们用str,如果它是对象来验证一下,你看它是字符串,可以调用字串的方法对不对?那我能调用它里边内容吗?
14:03
你看。这个功能本来就是字符串,就自动串是这个格式,那打印出来对不对,因为没有这个属性,这个方法对不对,如果它变成对象就可以打印了,那我们怎么把它这转回对象,你看用什么呢?用嗯,Let生明一个obg个OBO吧,等于GS Bo用接类里边的什么反串线化,这个是串业化,那我们得用反串业化,反串业化是哪个呢?这里边PA。那p.P点这里边需要传一个字符串,这个字符串格式呢,必须是什么?必须是阶层格式的字符串才能给它转回来,转成一个对象O,然后呢,我们O点内。用这个rot,你看你能不能把这个呃名字打印出来,名字是李四。那你自己打印出来了,就相当于就把字数转回来了。转成字符串就可以在网上传输,比如说你把它传给我,我把它传给你对不对,你那就可以用了,就可以写到硬盘里去了,而本身的这样的格式只能在语言里用,在内存里用,对不对?所以呢,我们经常需要串行化和反串化的,特别是在网上传输的时候,经常是需要这种的。
15:08
啊,这个是阶层类一个不是说对象里边直接不要数独理的方法,或者是自串的方法,直接对象点就可用的,这本身也是对象点,在从接触对象里边,本身那对象它不支持,不是说在最上层位里边计算过来的。好,谢谢大家,这节课我们就讲到这里,主要是呃,ES6给我们提供了类的新用法和阶层的新用法啊,谢谢大家,这。
我来说两句