00:00
好的,那么接下来我们来看看这个,哎类,什么是类呢?哎,刚刚我们提到这个对象,那类呢,实际上就是对象的模型,换句话说,我们可以通过这个类来创建对象,而且我们要想去定义对象,要想创建对象,我们必须先得有类,类的话,实际上它就是定义了类,一个对象长什么样子,我们之前说过,对象当中实际上包含两个部分,一个是属性,还有一个是它的方法,哎,那么类就规定了什么呢?一个对象里边它有。哪些属性,哎,有哪些方法,这就是类的作用,所以我们也可以说是这个类的话,就像是这个对象的模型,或者的话,拿人做比较的话,类可能会有点像我们人的那个,诶DNA啊,一个DNA它决定了我们人这个对象它长什么样子,那一个类的话,决定了某个对象啊,具体的对象它的一个呃结构,那我们说了,在这个诶,TS当中,或者在GS当中,我们有各种各样不同的类啊,我们创建人有person类啊,创建狗有dog类啊,创建汽车有这个car类,创建什么东西就会有什么对应的一个类,所以我们要想创建对象,对我们来说只要找到那个对应的类就可以了。那么关于这个类这个概念的话,TS里的类和这个GS里的类的话,它其实是大同异,所以如果你对这个G的话。
01:34
之间的一个区别就行了,但是的话,由于我们这个视频的话,会面临的这个同学可能会诶不同层次都有,所以呢,有的同学可能类掌握的不是特别好,所以我这里讲这个类的话,首先是站在TS角度讲角度上去讲这个类的二一个我会从头把这个类的知识点给他从头去梳理一遍,那就是希望哎,无论你是理解这个类也好,还是不理解类这个类也好,希望通过这个视频的话,都可以把这个类给它搞清楚,那我们废话不多说了,我们先来看一下我们如何去创建一个类,那要创建一个类的话,那这里边我们的项目的话,我们就诶我们要换一个新的章节了,之前是我们的chapter,诶零一,那接下来我们来进入到我们这个CHAPTER02,所以在这儿我直接呢去新建一个project project我这改一下,诶0202的话,我们改一个名,这个名呢,是我们零二的第一部分part part one直接。
02:34
点C。诶CC,哎呀,他是告诉我之前这个项目已经诶存在,它不是空的,不是空的好办,那这样啊,应该是我之前创建过这个东西,所以怎么办呢?诶我找到我的这个,诶这个项目目录干什么呢?诶给它删了就完了,应该是之前我创建过来给它删除掉。啊,东西还不少呢,是吧,好,这样删完了以后我们再创建它,这就不会有什么问题了,但是它里边东西会比较多,我们稍微等一下,让他去删除一下,那这里边的话,我们在创建这个新项目之前,我们用的是这个wepa,我在创建这个新项目的话,由于我是想讲这个类,我们这个时候再用webpad的话,实际上它的必要性呢,不是那么的大了,所以我们后边的话,呃,这个类来讲的话,我们就整一个这个简单的版本啊,我们就呃,就用一下我们这个TS这个编译器,把这个类的话给它过一下,后边我们去做实际的项目,做这个的时候,我们再去用这个we去搭建,在这儿我们还是拗一个project project,我们这CHAPTER030,诶别行三了啊零二啊零二,我们的第一部分叫做part one。
03:47
哎,Part one,然后创建完了,我们直接在当前窗口打开,那这里边的话,我还是用一个我们这个,哎,我就简单点写了,我就直接创建一个TS点,诶呢,我们用ES2015,我们这个target呢,也用ES2015MAP我们暂时先不用啊,暂时先不用我们来一个什么呢?诶来一个这个这个这个strict的,我们来一个这个true,开启它的一个严格模式啊严格模式其他的这玩意儿我们都不要了,因为默认值就已经包含了,所以其他的话我们就根据实际情况我们再去添加了,那在这里边我们就直接来创建一个这个诶新的文件啊文件,我们来一个这个什么吧,Src吧,SRCSRC的话,我们在这加一个配置,加一个这个in includede,因为待会儿其实我倒是不一定要输出,但是为了避免万一要输出,我还是写上SLC下边的星星下边这个星,然后呢,在这再加一个out。
04:46
Out DR,所以这个时候我们其实用这个呃,TS跟用我们这个它这块其实有一些点是相同的,但是的话,如果用的是web的话,你像这个out de啊,像include呀,我们就直接在webpa里配置了,我们现在没有用web,就可以在这个TS里边去配置,往哪输出呢?直接往这个哎diss里去输出就完事了。好,这写完了,然后在src里边我们创建一个新的TS文件,我们来写我们的第一个叫什么呢?哎,我们来来一个类的一个这个诶剪辑啊,我们先了解一下这个诶类,那这里边的话,我们类要怎么去定义,很简单,我们使用什么呢?哎,最简单的一种方式,我们使用叫做一个哎class关键字。
05:37
哎,来定义一个类,它有点像那个函数,函数我们怎么定义的函数我用的是function关键字后边跟着一个函数名,而我们的类的话,我们用的是一个class关键字后边呢,跟的是一个类名,那比如说我要定一个person类,那这个时候我就后边跟着一个这个person,那这个就是我说的一个诶类名,那现在的话我就有了一个person类,定义起来非常简单,你看后边也没有小括号,就是直接跟着一个大框,那现在这个类你定义完了,实际上它就已经可以去使用了啊,我们来试试,我们直接来一个cost,来一个P,等于一个new,一个person,直接new一个person new完了它就可以去用了,我们在这儿呢,给它进行一个编译,哎,这样吧,我还是在这命令行这来编译直接,哎呀哎呀。
06:29
直接来一个tsc,我们来一个杠W,开启它的一个监视模式。让他呢,在我文件修改以后自动去编译啊,稍微等一下。诶,这文件是不是就已经编译出来了,诶为了让它可以运行的话,我们还是啊用的是我们老方式,在这我们创建一个index.html,然后呢,这是我们说的一个类,哎,在这里边的话,演示的话,我们来引入一下啊,Script的标签,直接来一个src,引入我们这个Dis下边的一个零一类的简介,直接运行了,哎,所以你会发现当我们不用webpa的时候,我们这个环境搭建起来实际上是非常非常简单的,但是的话,Wepe的话,实际上我们真正做项目的时候也是离不开的,我们在这儿之所以可以省略,因为我们现在这东西它比较简单啊,比较简单好来我们这打印一下person.log啊打印一下,然后呢,在这我们来刷新一下,你看这个类,我是不是就已经定义好了,哎,所以定义类的方式是非常非常的简单的,那类定义完了,我们是不是我们说了类,实际上它主要包含两个部分。
07:41
哎,类中它主要包含了两个部分。哪两个部分,一个部分我们叫属性,还有一部分我们叫做方法,哎,所以我们其实这不能说类中吧,这应该叫做这个对象中啊,对象中主要包含了两部分,一部分我们称为属性,还有一部分我们称之为方法,而这些部分我们都需要在类当中给它明确的给它表示出来,所以那以这个person类为例,我们在person类里边包含哪些属性呢?在这儿我可以直接去定义,定义我们这个属性,在类当中直接写怎么写,有什么属性你就写什么属性。比如说我类当中有一个对象当中有内幕属性,那我就直接来一个内幕冒号,我们直接写一个string,那就表示有一个内幕属性,你后边也可以直接把类型给他写上,只给他写上,比如说我写一个孙悟空,那这就表示什么意思呢?表示我这个对象中有一个属性,属性叫做哎,属性叫做name,它的值是孙悟空啊,用分号,你说再来一个A冒号。
08:47
我们来什么呢?来一个number,你这等于一个这个18,那这就表示我的这个类当中有一个什么呢?哎,有一个这个不能说类当中了啊,因为这叫实例属性,在实例当中,在对象当中会有一个属性叫做一个18,所以这个时候再创建完了,我们再打印这个person的时候,你看啊,打印这个person的时候,这一刷新。
09:08
哎呀,他这我们看一下。他这个应该还没编译过来。OK,我们刷新一下,看看效果,一刷新。哎。看来他是得让我去打印一下这个P点一个name,这一刷新是不是孙悟空就有了,哎,我们直接打印的时候呢,他他这还没有。分着打印一下PR点一个name,然后逗号来一个PR点一个H,分别去打印一下他们的纸,这一刷新,哎呀,刚才应该是编译的,会有一个这个时间差在这儿,我们是不是就看到了,诶name幕是孙悟空,Age是18啊是18是这样一个效果,那这叫做一个什么呢?这个就是我们所定义的两个属性啊,两个属性注意了,这种属性我们叫做实力属性,实力属性什么叫实力属性,就是说我这个属性的。
10:01
这个属性本身是存到哪儿的?存到person类的实例的,也就是说你只有什么呢?你只有new了person以后,我们才能看到这些属性,New了person你通过实例,你看P是不是就是person的实例啊,哎,你通过实例去点name.age去访问到的这些属性啊,这些属性实际样营销你说还还有什么属性啊,还有一种属性我们叫做类属性,类属性怎么访问?类属性是通过这个类直接访问,比如说谁是类啊,Person就是类吗?啊person点一个age这样的访问的话,如果你能这样访问这种属性叫做类属性啊,类属性或者叫静态属性,但是这里边有没有age这个静态属性啊,诶没有,所以这个时候它就给你报错了,你访问是访问不到的,你这编译都编译不过去,所以一定要注意,那你说老师我怎么去定义这个类属性啊,哎,那注意了,在这个属性前使用s sta t static关键字。
11:01
四可以什么呢?哎,可以定义我们这个,诶类属性,或者我们也叫做一个静态属性啊,静态属性什么叫静态属性,就是不需要创建对象就可以用的属性,所以在age前边,我如果写一个static age啊static age,那这个时候注意这个age现在就是一个静态属性,你说我通过实例去访问,你看啊person.name person.age这时候是不是给你报错了,告诉你这个实例里面没有什么呢?没有age属性,为什么?因为age属性现在它是一个静态属性,那既然是静态属性,我们就要通过类去访问person.age不要创建对象,我们一刷新走一个是不是18就有了,哎,18就有了啊,所以这里边注意啊,我们这个属性这两种叫什么呢?通过哎,直接定义的,直接定义的属性是我们的这个实例属性,实例属性需要什么呢?需要通过我们这个对象的实例去访问。
12:05
去访问。举个例子,怎么访问,那你在这儿的话,你就得来一个P,等于一个new,一个person new,一个person,然后呢,你在这儿直接P点一个name,这种叫实力属性啊,直接属性,那我们使用这个sat t static开头的属性是什么呢?哎,是我们这个静态属性。静态属性或者叫类属性,这两个是通用的啊,类属性那不需要什么呢,无需创建对象,可以直接什么呢?通过这个去访问,所以现在你想访问这个实例属性的话,你可以直接来一个什么呢?Person p SN person点一个这个age啊person.age那这样就访问了,所以它们两个区别就是实力属性,你得创建对象类属性直接访问就OK了啊,直接访问就OK了,然后的话,在属性当中当中的话,我们这创建完这个属性啊,以我们这个name属性为例,以我们这个name属性为例,Person点一个name,点一个log打印一下,它这一刷新,诶name啊,没刷过来呢。
13:17
它编译的话需要花费点时间,一刷新编译过来了,打印的是孙悟空,这个时候这个属性我们是可以随意去改的,我来一个person.name我改成这个Tom Tom改完了以后,我再打印一下这个person,点一个name,点一个log打印它啊,看效果,我们这个时候看一刷新是不是这个name就从孙悟空变成了Tom呀,哎,也就是我们这样写完了以后,我这个值我可以读也可以写,就是它我有全部权限可以获取这个值,也可以去修改这个值,那么如果我在内幕这个属性前边,我加上了一个read的only瑞德,Only瑞德叫什么呢?叫只读属性,这样加完了以后,注意了,我这个属性就只能看了,不能改了,你看我这一改是不是就报错了,报报错什么玩意儿叫什么呢?
14:07
哎,叫什么呀,就是尝试着去给一个这个抗或者只读的变量去赋值了啊,这是不行的啊,这是不行的,所以read only开头的属性表示的是一个只读的属性。表示一个只读的属性,它无法修改啊,无法修改,那你说老师我能不能把read only和这个static给它一块用啊,哎,那我就可以写一个诶static RAID恩,这么一个属性,那这样的话,这样的话什么效果呢?这样的话就把我们这个诶age变成了一个静态的只读属性,所以在这儿的话,你如果想通过person点一个age你去改它的话,那这个时候你是改不了的,因为它是一个只读的啊,注意顺序啊,瑞德恩利要放在static的后边,你要颠倒位置就不行了啊,这个是我们说的这个,哎,两个东西啊,这可写可不写,一般的话没有特殊情况,这东西倒是用不上啊,用不上好了,这个是我们说的一个属性啊,这些特点注意啊,属性实力属性直接写就行了啊,实力属性直接写的静态属性加这个static还是啊,我们保留一个我们最常用的这个结构,最常用就是什么呀?哎,就是直接来一个name。
15:22
哎,其实你可以直接写孙悟空了,直接写孙悟空,嗯,因为他有那个自动的类型判断嘛,对吧,让他自己判断就完事了,好这一块是我们说的这个属性。属性的话我们就看完了,那接下来我们再看第二块,第二块的话我们叫做方法,方法其实也就简单了,方法怎么写呢?方法在属性下边,我们就可以去定义我们这个方法,方法很简单,你也不用写方,你也不用写任何的关键字,直接写方法名后边加括号就行了,比如说我想写一个这个c hello啊c hello,那我就可以c hello后边加一个括号,然后加一个大括,那这样我们就定义了一个c hello方法其实这就是一个函数,在它里边你可以把你需要写的内容全都写进去,比如说我就写一个cancel,点一个log,诶log,一个hello,大家好,随便写一个啊,随便写一个,那这样的效果就是当我去调用这个say hello的时候,啊,Say hello的时候,它就会在控制台打印出一个hello,大家好,我们来调一下试试啊,注意了,还是这种情况,这种我直接写的,直接写的就表什么意思呢。
16:31
直接写的就表示的是我们实例方法,所以掉的时候你要用实例去掉person点一个c hello p.c hello,因为P是实例嘛,啊掉完了以后,在这儿我刷新一下走一个是不是就执行了,哎,执行了同理,如果你在这儿加上了一个static啊static,那么它就变成了一个类方法,类方法你就不用实例了,直接写一个person点一个这个c hello啊person点一个c hello,然后在这儿一刷新走一个是不是就就掉了,哎,所以啊也是一样,就是也是方法跟这个类的话,在方法跟这个属性的话,在这一点上是相通的啊加static就变成类方法,不加static就变成了我们这个实例方法,哎,如果啊,如果我们方法以什么呢?以这个static开头。
17:24
哎,则我们这个方法就是什么呢?就是我们这个哎类方法,或者叫静态方法,哎直可以什么呢?可以直接通过这个类去调用,去调用,如果不以开头,那就是一个普通的实例方法,实例方法的话,我们就创建为对象,直接通过这个对象去调用就OK了啊对象去调用就OK了,好,这个是我们说的一个类的一个最基本的一个使用,所以其实定义一个类也没有那么难,就是两块,一个是什么呀?哎,一个我们叫做我先把这注了啊,这有错,因为我我把这static给去掉了吗?哎,关于我们这个类的话,实际上我们要定义的就两块,一块的话,这种东西啊,一个东西等于一个值,一个东西等于一个值,这种东西叫属性,还有一个就是什么什么后边加一个括号的这种东西叫什么呢。
18:18
叫方法啊,就是定义这两个东西,这两个东西定义完了,这个类也就定义完了,那么关于这些静态方法呀,静态方法这些东西啊,相对来说用的的话并没有那么的多,并没有那么多,还是以我们这个实例方法为主,所以如果你是第一次接触的话,可以先尝试着把这种类型的对象呢,自己去定义一下啊,一定注意两个名字,这种叫做属性,这种叫做方法,好我们还是先来听一下。
我来说两句