【这些年我似是非懂的 Javascript】那些年我睡掉的物件导向 #浅谈 #Part 1

嗨~各位好久不见,
最近几乎都在写一些自己喜欢的专案,
不知不觉已经两周了呢 (欢乐的时光总是过得那麽快),
今天要来继续学习啦~

如果你也跟我一样在大学时期物件导向课程都在唱歌睡觉的,你值得与我一起恶补学习 xDD

到底什麽是类别?

其实类别就是个像是一种分类的抽象的设计模式
将任何给定的结构想成更通用的基础定义的一个变体。

以交通工具来说,交通工具百百种,
有些会推进,有些会飞又或是可以载人,
假使一个交通工具我就给它定义他可以飞的功能,或是他可以推进,那一百种交通工具就必须每次都重新再次定义他会飞或是他可不可以可推进。
听起来就很不合理!对吧?

那我们该怎麽做?
例如一台车子就可以先定义更通用的类别叫做载具(Vehicle)
而载具里面定义了各种不同类型的功能,比方说上面所说的载人、推进、飞天,
当我们想要定义其他载具,比方说火车,我们就可以透过继承或是扩充,就可以达到我们要的。
是不是听起来比一开始的方法聪明多了!?

除此之外,类别还有一个概念是多型,
就是他可以藉由来自父类别的某项通用行为在一个子类别中被覆写,并且赋予他更特殊的行为。

在 Javascript 的类别

讲这麽多, Javascript 具备一些很像类别的语法元素,例如 new 或是 instanceof ,甚至是 ES6 新加入的 class 关键字,所以 Javascript 实际上还是具备了类别这东西嘛!
...
...
其实没有 xD

不是啊!类别如果是种设计模式,那还有什麽问题!?
问题在於,对於 JS 来说类别只是一个选择性的模式,他不像是 Java 一样直接硬着来你根本没有选择的余地,可以说在 JS 中使用你伪造出来的类别和其他语言是不同的,至於为什麽...?
让我们继续看下去~ (书上说的 xD)

建构器

建构器是类别的实体是由该类别的一种特殊方法所建构的,通常会与他的类别同名。
直接看个范例。

class Player{
    specialTrick = nothing
    
    Player(trick){
        specialTrick = trick
    }
    
    showTime(){
        console.log(`My killer moves is ${specialTrick}`)
    }
}

假使要制作一个球员的实体,我们就可以这样做。

Iverson = new Player('killer crossover');
Iverson.showTime(); // 'My killer moves is killer crossover'

所以看起来就是 Player 类别有一个 Player() 建构器,他就是我们使用 new Player() 时所呼叫的东东,而当我们加上 new 的同时让语言引擎知道你想要建立一个新的类别实体。

以上是今天的内容


啊~~ 最近忙着租屋和工作的事,
下篇继续说 xD

感谢您的收看
我们下集见

到底谁说铁人赛完之後会感觉很闲 xDD


<<:  GDPR

>>:  Week35 - 轻松加解密repositories或slack上的档案

2021-Day11. To be, or not to be. 让Chatbot也能开口成章吧~经典语录精选~

舒安表示:影片开始前几秒的那张投影片纯属失误(放错张...),第11天就开始精神恍惚了 0.0 ...

Day 6 | 讯息提示元件

Toast 讯息显示後会於数秒内消失,是最常用的提示讯息,使用makeText()产生 Toast....

Day 17 - Sorting Band Names without articles

前言 JS 30 是由加拿大的全端工程师 Wes Bos 免费提供的 JavaScript 简单应用...

Day 30: 资安的隐藏第六面项:AWS 合规 & 完赛心得

前面讲了在AWS上的资安五大面向以及相关的服务简介、操作,今天我们来看看隐藏的第六面向:AWS 合规...

Day-8 剖析Excel排序功能

今日练习档 ԅ( ¯་། ¯ԅ) 大家好,今天要来介绍Excel中的排序,排序对於Excel来说可是...