iT邦幫忙

第 12 屆 iThome 鐵人賽

2
Modern Web

【這些年我似是非懂的 Javascript】系列 第 31

【這些年我似是非懂的 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


上一篇
【這些年我似是非懂的 Javascript】Day 30 - 完賽心得
下一篇
【這些年我似是非懂的 Javascript】那些年我睡掉的物件導向 #淺談 #Part 2
系列文
【這些年我似是非懂的 Javascript】34

尚未有邦友留言

立即登入留言