0%

JS核心-(45)-繼承與原型練-原型鍊的概念-為什麼有原型

前言

介紹原型鏈之前,我們要先從介紹 Javascript 的名稱由來開始說起

名稱由來

Java 跟 Javascript 兩個程式語言的名稱非常相近,但是寫法上卻有很大的差異,在 Javascript 推出的時候,基於商業上的考量,

為了吸引 Java 的開發者也投入 Javascript 的開發,所以將這個語言的名稱定義成大家所熟悉的 Javascript。

其中 Javascript 的一個特性是源自於 Java 的類別繼承,所以 Javascript 就使用 new 這個方法產生一個新的物件,透過 new

這個方法所產生的物件會有一個繼承的特性,就稱之為原型繼承。

Java 的 類別繼承

類別 (class) 是屬於 Java 物件導向的一種概念,當你需要定義狗,而且數量不只一隻的時候,也就是需要重複定義的時候。

首先你會創建一個狗的類別,其中包含了一些狗應該要有的通用屬性,跟一些方法。以屬性來說,會有顏色、體型等,方法則是

吠叫之類的。再來就是定義狗的實體,例如說我們定義一隻狗叫做比比,比比的顏色是棕色。透過這個方式我們可以定義出無限

多隻想要的狗出來。

假設我們是造物主,我們希望在這個世界上有非常多的狗,所以我們必須先在腦中對於狗有一些特定的通用印象,這個印象就是

所謂的 class。當這個想法要實際創造出一隻狗的時候,就需要用到剛剛提到的 new 的方法進行實體化,而實體化出來的狗就

叫做 Instance

並且實體化的狗具有自己的毛色,體型大小以及能夠吠叫的方法。

所以實體的繼承,就是可以取用 class 原型的屬性以及方法。


Javascript 的原型繼承

為什麼 Javascript 是屬於原型繼承呢 ?

因為 Javascript 中的特性,基本上都是物件,所以並沒有 class 的概念,所以它必須使用原型的概念來做出類似類別

(class) 的方法。Javascript 雖然沒有類別繼承,但在 ES6 中也推出了類似類別 (class) 繼承的方法,但是要特別注意,

ES6 的 class 本質上還是 Javascript 的原型繼承,並不是引入其他語言的類別導向。