[JavaScriptWeird]No.40 觀念小叮嚀:古典和原型繼承

前言

老樣子,在進入新的觀念之前,都會先解釋某些特定名詞的意思,避免聽不懂講師再說什麼,本篇之後將進入 JavaScript 相當受歡迎也很困難的概念,我們要討論 JavaScript 的物件導向和原型繼承。

繼承 (Inheritance)

繼承表示「一個物件取用另一個物件的屬性或方法」,當然這在不同的程式語言間可能是不太一樣的,但對我們來說只要了解基本的概念就好。

古典繼承 (Classical Inheritance)

古典繼承在 C# 以及 Java 內都有相同的概念,這可以分享物件的方法和屬性。

當然古典繼承也並非完美,舉例來說,當我們已經建立很多大型的物件,這些物件互相繼承彼此的屬性、方法,最終會得到一個很大的集合。

整體上來看這個大集合變成像是很多樹狀的物件在互動,這種情況下會很難搞清楚彼此之間的關連。

而古典繼承也有很多不同的關鍵字,像是:

  • friend
  • protected
  • private
  • interface
    需要個別搞懂不同關鍵字是什麼意思,並且使用它們。

原型繼承 ( Prototypal Inheritance )

相較於古典繼承而言,原型繼承具有這些特點:

  • 彈性 (flexible)
  • 可擴充性 (extensible)
  • 簡單易懂 (east to understand)

當然原型繼承也不是個完美的東西,和古典繼承一樣都是有好有壞的。

0%