00:01
好,那么我们开始进入到我们的这块的一个第二阶段啊,我们来聊聊这个面向对象,那么面向对象我们JS本身也是一门面向对象的语言,但是实际上我们有的时候或者很多情况下,我们在写这个GS,这个面向对象用的并不并不好,我们更多的时候可能在把GS当成一个这个面向过程的语言再去使用,那我们就要讨论一下,到底什么叫做面向对象啊,这块可能会有点无聊啊,因为我在这我也只能是只能是干说啊,你就听我说啊,你去,哎,你去想一下这个事儿。那一提这个面向对象的话,我其实印象比较深的话,就是在我刚刚去接触这个编程的时候啊,因为我刚开始是学的是Java,学的Java的话,因为我这个面向对象我整的我也不太明白啊,去去去看什么书啊,然后查这个查这个资料啊,我记得当时那本书叫什么叫thinking in Java Java编程思想那本书啊,就看这个面令啊。
01:00
我就发现呢,这个外国人啊,写这个面相对象啊,都特别短啊,都特别短,但是实际上我们在去就是外国人的书里边写的啊,都特别短,但是当我们去学习这个东西的时候的话,这这这都总是没有人能把这个面向对象的给他到底是什么说明白,所以我一直就不理解这个东西啊,一直就不理解,然后的话,我在学习过程当中,可能当时也没什么太多的资源啊,也上网啊,找一些这个资料啊,或者直接上网啊,或者这些技术的QQ群啊去发问啊,说到底什么是面向对象啊,到底什么是面向对象,那我看到的最多的答案的话就是。哎,会有一个人啊,就是故作深沉的去给你回答,而且虽然是文字聊天,但是我从这个从这个隔着屏幕是吧,我都能感觉到他这个这个这个这个装的气息是吧,大概是一个什么场景啊,我在问啊是吧,什么是面向对象啊,诶,然后呢,突然就冒出这么一个人啊,或者冒出这么几个人啊啊。
02:06
这个双手合十啊,或者单掌啊,单掌放在这个,哎,这个这个胸前啊,阿弥陀佛啊,阿弥陀佛,一切皆是对象啊,说这么一句话,哎呀,我的天呐,当时这句话就给我说懵了。这是啥玩意儿啊,这是啥玩意儿,这这这。一切皆示对象,哎,但是当后来我明白这个什么是面向对象以后,我就发现呀,这哥们说这话呀,真对啊,真他母亲的对是吧,但是呢,这句话却是一点用都没有啊,一点用没有,或者换句话说叫所答非所问啊,所答非所问他跟我这个跟我呃,跟我这个问题一点关系都没有,那到底什么叫做面向对象,面向对象这个概念诶,后来我才合计明白,为什么这老外呀,写这书啊,写这面向对象,你一写这面向对象就写那么几行,为什么写这么简单?
03:04
哎,因为它这个概念本身就很简单,本身就很简单,那何为面相对象这个词儿,你完全可以从它的字面意义上去理解,什么叫面象,什么叫面象,面相就是对着嘛,对着对相是啥?甭管了,对象就是一个名词呗,面相对象就是对着对象,那所以所谓的面向对象的编程语言也叫o op对吧?面向对象的编程语言就是我们在写程序,写代码的时候,我们所有的操作都是通过这个对象去操作的啊,任何操作都是通过这个对象操作,所以叫面向对象,这很好的一个理解的意思就是我说面向面向这个面向这个这这这这个AK47,那我们就对着把枪是吧,我说面向游戏,我们就对着游戏,我说你面向你媳妇,哎,你就对着你媳妇儿,我说你面向你男朋友,那就对着你男朋友,我说面向对象,那就是面向着对象,通过对象来进行操作,所以所谓的面向对象就是我们在这个写程序过程。
04:04
当中所有的操作都是通过这个对象来进行的,所以面向对象的概念本身并不复杂,复杂的概念是谁?复杂的概念其实是对象,哎,我们对于我们更多的疑问其实是这个对象到底是什么?诶,所以为什么说诶一切皆是对象,他没有毛病,这句话一点毛病都没有,的确是一切皆对象,但是我们的问题是不是一是不是所有东西都是对象,而是这个对象他到底是什么?那这个事儿啊,哎,这叫什么呀,叫小孩没娘啊,说来话长,我们就要往远处扯一扯,我们要先理解了什么是对象,后边的工作我们才好往下去开展什么是对象。什么是对象?那我们先聊聊我们的编程语言是什么?我们想想,我们为什么要写程序?我们为什么要写程序?我们程序是干什么?程序是干什么?程序实际上就是对我们现实中的这个事物的一个抽象。
05:12
对现实事物的一个抽象,比如说呃,比较点什么叫抽象,抽象对应的一个东西叫做一个具体什么叫抽象,哎,比如说哎,比如说我跟这个这个什么呀,这个这个。哎,马路上啊,马路上我看到一个美女啊,看到一个美女,看到这个美女呢,我就我就我就我我就我就非常的喜欢,那喜欢怎么办呢?诶喜欢我就想把这个美女抱到家里来啊,抱到家里来,咱们先不考虑他会不会打我啊,会不会报警,会不会有这个见义勇为的人把我拦下,不考虑这些问题,那假如说我把这个美女抱到家里啊,当然也不考虑我媳妇儿打不打我的问题,我把他抱到家里,抱到家里以后,那这个时候这个美女就是一个什么呢?就是一个具体的一个人,我把这个具体的人拿到了我的家里。
06:02
那这个叫什么呀?这个人是一个具体的人,所以我们每个人,我也是一个具体的人,你也是一个具体的人,我们的真实的事物就是一个具体的一个事物,这叫具体,那什么叫抽象,还是说到这个美女,那很明显,我把这个美女抱到家里的话,很明显他是我的一个妄想,对吧?我到家里很容易被各种人打死是吧,这是这天理不容,有可能老天爷咔一个雷就把我劈死了,对吧?这个事儿肯定不对,我肯定做不到这个事儿,但是我还是喜欢这个美女,怎么办呢?诶,我可以拿我的手机,我偷偷的给这个美女照一个相片,照一个相片以后我把这个相片拿回到家里,诶,我看这个相片也很过瘾是吧,也很过瘾。这个事儿好像说着有点有点下流了是吧,但是我没有那个意思啊,只是举一个例子,所以这个相片实际上就是什么,这个相片就是对这个美女的一个抽象,我把一个具体的人啊,具体的人是很大的,他的信息是很多的,抽象成一张小小的一个。
07:07
相片,这个相片就是对这个具体人的一个抽象,希望你能理解什么叫抽象,那程序是什么?程序是对我们现实事物的一个抽象,你想最典型的我们说我玩这个游戏啊,游戏什么什么,这个叫什么和平,和平精英对吧,那他是不是对我们现实生活中这种战争的一个一个抽象啊,虽然现实里边可能不会有这种这种战争,但是他是对这种情况的一个模拟啊模拟,所以你像游戏是对我们现实生活一个抽象,那比如说我们网页,网页是什么,网页是不是对我们这些平面媒体的一个。一个抽象啊,报纸报刊这个杂志是不是都是对这些东西的一个抽象啊,所以我们的程序实际上就是对我们现实事物的一个这个抽象啊,所以记住了,诶抽象是什么?对应的是一个具体啊,所以程序就是对现实事的一个抽象,那问题就来了,我们这儿有一个现实事物啊,比如说我有一个人。
08:13
我有个人,这个人呢,我想把他做成一个游戏的人物,这个人是谁呢?这个人是老王,老王啊,我想把他放到这个这个这个这个这个叫什么呀?叫这个绝地求生里啊,我把它做成一个游戏的人物,那我怎么把这人弄到游戏里,那这个时候我就要对人进行抽象,那问题来了,我一个具体的人,我一个具体的事物,到了我的程序中,它是什么?哎,他就是对象。它就是对象,所以记住了一个事物到了程序里,它就以对象的形式去存在,所以你象玩游戏,玩游戏我们是不是有游戏人物,游戏人物在程序里是什么是对象,我玩游戏我是不是有这个子弹,子弹在程序里是什么是对象?这我玩游戏是不是有枪啊,有手雷,有衣服,有皮肤,这些东西在程序里都是对象。所以一个实物,一个实物抽象到了程序里,它在程序当中就是以对象的形式去存在的。再反着说,也就是意味着我每一个对象实际上在背后都对应着一个实物,每一个实物都有一个对象,所以我们才说一切皆对象,任何的东西到了程序里都是以对象的形式去存在的,那你说我程序有多少个对象,那多了去了啊,多对象太多了,数也数不过来,太多了啊,那你说那他有什么好处呢。
09:45
好处就是我们想干什么,我们只需要找到它那个对应的对象,哎,我想给我这个枪里压个子弹,我找到子弹的对象,我想让这个子弹对人造成伤害,那我就去调用子弹造成伤害的方法,我想让这个人,让这个人这这个这个人掉血,那我就去调用这个人受伤的方法,也就是我想干什么,我只需要找到那个对应的对象,然后通过那个对象来完成我们的工作。举个例子,像我们实际的应用,那我们像我们在我们的GS里,我们有window对象,Window对象它是对象,是对象就有所指代,那window对象代表谁?Window对象代表的是我们整个的浏览器窗口,所以我要想对浏览器窗口进行操作,那我要找谁?
10:35
那肯定要找window对象,那还有谁?Document对象?Document对象代表谁?Document叫文档,代表我们的整个网页,那我要对网页对象操作,我要找谁?我要找document对象,对吧?我要获取get by ID啊,By class name,什么select等等的,我都是通过document对象进行查询的啊,操作网页我要使用document对象,那我操作控制台呢?我们有一个cancel对象,cancel.log我可以向控制台去输出日志,点time,我可以去开启这个计时器等等等等,那总之那这些都是对象,每一个对象都代表着一个具体的一个事物,那通过这个对象我们就可以去操作这个事物,那所谓的面向对象,就是我们通过对象去操作这些事物,这么说。
11:28
我相信你应该能能理解一些了。但是话说回来,面向对象这个概念其实很简单,但是它又不简单,为什么?就是因为它太简单了,你你会导致你让你觉得这东西他不好理解,所以关于面向对象这个东西,如果你现在你还没听明白。不要紧啊,不要紧,先先记住我刚才说的一系列话,先慢慢的去体会它,然后呢,把它慢默默的记在你的心里,然后随着我们后边的课程慢慢的去理解这个东西。面向对象的话,它并不是我们TS里独有的,在ES里,ES6里边就已经就就就不是不光ES子六了,就GS有的时候它就其实就已经支持这个面向对象了,只不过在一些版本的GS当中,它的面向对象支持度或者使用起来并没有那么方便,那从ES6开始,其实使用起来也就已经很方便了,包括我们待会去讲了,TS对象很多点在我们的GS里也是可以去使用的,所以面向对这个思想你要理解,诶,当然。
12:35
现在不理解,可以随着我们学习的深入,随着你自己的这个技术水平的提高,慢慢去理解它,你不用追求说一步到位,把这个东西搞清楚了,这东西不着急,这东西不着急,就是所有这种思想类的东西都不着急,代码先学会敲了思想慢慢去体会,这个就有点儿像这个内功的这个心法一样,先给他记住了,然后后边我们慢慢去体会,你体会的越高,你的这个武功的这个层次就会越高啊,慢慢去,慢慢去来,而且还是它也不是我们TS里独有的,所有语言都有,你把它理解了,你在学习别的语言的时候,你会发现其实道理都是。
13:14
一样啊,道理都是一样的,那我们这个对象,那对象的话就是我们这个具体的就是事物抽象到程序里,就是一个对象,那问题又来了,我们一个事物很复杂呀,那一个人一个人这个书人得多复杂呀么一个人呀。我怎么把人抽象到程序里呢?哎,那这就是我们这个计算机科学家的聪明之处,其实我们会发现,你即使一个人。一个事物再复杂。他也就是包含两个东西,第一个东西与人,拿人举例子,人有性名,有性别,有年龄,有身高,有体重等等,有这些这些东西,这些东西是什么?这些东西都是人的数据,诶,能用数据去表示的,那到了对象里,我们称其为属性,表示数据,那还有什么?你说老师人不仅有数据啊,我能吃。
14:07
我能拉,我能跑,诶,我超人,我能飞,我还能把裤衩穿外边,诶,那这些是什么?这些是人的方功能啊,人的功能,你有什么功能啊,你具有哪些功能是吧?我这个机器具有哪些功能,我这个工具具有哪些功能?那么功能到了数据里边,到了这个,到了这个对象里边,它就叫做方法。你想吧,任何事物就这两个东西,一个是数,一个是数据,还有一个就是功能,数据在对象里就叫做属性,而功能到对象里就是方法。所以我们抽象,这个抽象是非常彻底的,就是把一个任何事物都分成两部分,一部分叫属性,一部分叫做方法。所以你想一下,我们对象里你要操作对象,你要去找对象,那就这两个东西,一个是属性,还有一个是方法啊,一个是方法,好,那我们还是说了,这个概念本身很简单,难点在于什么?难点在于我们要如何去创建对象,如何去定义对象。那么这些是我们待会儿。
15:07
要讲的这个内容,那这里呢,我们先听一下这个概念呀,还是不着急啊,慢慢的去体会一下啊。
我来说两句