物件導向是什麼?|方法與屬性又是什麼?

更新日期: 2022 年 11 月 1 日

小弟身為一位初學 JS 不到兩個月的超級新人,學到一個程度時總會覺得觀念卡卡的。

後來發現原來是自己對於 JS 「物件導向」此概念不太理解,導致我在學習一些與物件相關的程式碼時,總是無法清楚理解它在幹嘛。

遇到這種問題,天真如我當然馬上去 google 「物件導向」這關鍵字。

結果點開查詢結果後,發現內容寫的都是「有字天書」。

每個字我都懂,可是合起來的話就不知道在講什麼了。

後來有幸看到兩部相關的影片,才讓我對「物件導向」的觀念有清楚的認識。

閱讀要求:

「物件導向」屬於一種進階的程式設計概念。

如果你想要看懂本文的內容,建議先對以下內容有基本認識,才能更容易閱讀本文的內容:

什麼是物件?

根據當我們搜尋「物件導向」時,通常都會達到類似以下的解釋:

它將物件作為程式的基本單元,將程式和資料封裝其中,以提高軟體的重用性、靈活性和擴充性,物件裡的程式可以存取及經常修改物件相關連的資料。

引述來自《維基百科

作為一個程式初學者,通常第一直覺都是:「到底在寫什麼碗糕」。

因此,容我們換個更容易理解的方式,去認識物件導向的概念。

(本影片有中文 CC 字幕,請切換觀賞)

我們以 Google 這間公司為例。

Google 旗下有各式各樣的軟體服務,如:google 搜尋、google 地圖、google 日曆、Youtuebe 等等。

如果我們將這些服務的程式碼相加,它一共約有 20 億行程式碼需保存,並且讓全公司 2 萬 5 千位員工維護並更新。

對此,我們需要藉由有條理與有秩序的方式,將程式碼好好的收納並安排整齊。

首先,我們第一個可以想到的方法就是透過「函式」,將他們分裝組合起來。

假設一個函式可以保存 10 行程式碼,就能將 20 億行程式碼拆成 2 億個函式。

當然,對我們來說 2 億個函式,也是一個龐大的數量。

這時就需要使用另一個更大的容器,將函式打包起來,此做法就稱為:「物件」

我們可以使用物件,將數個函式通通收納到同一個區塊。

假如一個物件可以收納 100 個函式,這樣就能將 2 億個函式拆成 200 萬個物件。

相較於原先的 20 億行程式碼,200 萬個物件已經容易維護許多。

什麼是物件導向?

你可能想說 200 萬還是太多了,該怎麼辦?

這還不簡單,如果物件無法將程式碼分類完全,那我們為何不再用「更大的物件」將其打包。

例如:大大大物件 -> 大大物件 -> 大物件 -> 物件 -> 函式-> 程式碼。

最後程式碼就能透過函式與物件,讓它像俄羅斯娃娃一樣不斷被打包收納與整理。

上述這種將程式碼透過不斷物件打包、分類的過程,就稱為「物件導向」。

因此,其實「物件導向」的本質,其實就是一種管理程式碼的「管理方法」

什麼是方法、屬性

當我們理解物件導向的概念後,再套用到實際的程式碼中,就能理解對應的概念。

(物件導向的實際應用,強烈建議看影片)

我們可透過以下程式碼,建立一個基本的物件。

// 建立物件:宣告 變數名稱 = new Object() 
let obj = new Object();

// 將數字打包到物件中:物件.成員名稱=數字
obj.x=1;
obj.y=2;

除了如數字、文字等一般類型的類型,我們還可以將函式放到物件中。

// 將函式打包到物件中:物件.成員名稱=函式
obj.z=function(){
  console.log("安安,你好")
}

建立完物件後,就可以使用物件了。

// 使用已建立的物件 x 成員(又稱屬性),印出 1
console.log(obj.x);

// 使用已建立的物件 y 成員(又稱屬性),印出 2
console.log(obj.y);

除了能使用物件的「屬性」,還能使用物件的「方法」。

// 呼叫一般的函式
z();


// 呼叫已建立的物件 z 成員(又稱方法),印出「安安,你好」
obj.z();

以上,就是物件導向程式碼的簡介與實際應用。

問題統整

什麼是物件

假設一個函式可以保存 10 行程式碼,就能將 20 億行程式碼拆成 2 億個函式。

當然,對我們來說 2 億個函式,也是一個龐大的數量。

這時就需要使用另一個更大的容器,將函式打包起來,此做法就稱為:「物件」。

什麼是物件導向

其實「物件導向」的本質,其實就是一種管理程式碼的「管理方法」。

例如:大大大物件 -> 大大物件 -> 大物件 -> 物件 -> 函式-> 程式碼。

最後程式碼就能透過函式與物件,讓它像俄羅斯娃娃一樣不斷被打包收納與整理。

Similar Posts

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *