首先,對象的定義大致如下:
對象(object)是JavaScript的核心概念,也是最重要的數據類型。JavaScript的所有數據都可以被視為對象。
簡單說,所謂對象,就是一種無序的數據集合,由若干個“鍵值對”(key-value)構成。
var o = { p: "Hello World" };
上面代碼中,大括號就定義了一個對象,它被賦值給變量o。這個對象內部包含一個鍵值對(又稱為“成員”),p是“鍵名”(成員的名稱),字符串“Hello World”是“鍵值”(成員的值)。鍵名與鍵值之間用冒號分隔。如果對象內部包含多個鍵值對,每個鍵值對之間用逗號分隔。
我們從兩個層次來理解。
(1)“對象”是單個實物的抽象。
一本書、一輛汽車、一個人都可以是“對象”,一個數據庫、一張網頁、一個與遠程服務器的連接也可以是“對象”。當實物被抽象成“對象”,實物之間的關系就變成了“對象”之間的關系,從而就可以模擬現實情況,針對“對象”進行編程。
(2)“對象”是一個容器,封裝了“屬性”(property)和“方法”(method)。
所謂“屬性”,就是對象的狀態;所謂“方法”,就是對象的行為(完成某種任務)。比如,我們可以把動物抽象為animal對象,“屬性”記錄具體是那一種動物,“方法”表示動物的某種行為(奔跑、捕獵、休息等等)。
其次,典型的面向對象編程語言(比如C++和Java),存在“類”(class)這樣一個概念。所謂“類”就是對象的模板,對象就是“類”的實例。JavaScript語言沒有“類”,而改用構造函數(constructor)作為對象的模板。
前面說過,“對象”是單個實物的抽象。所以,通常需要一個模板,表示某一類實物的共同特征,然后“對象”根據這個模板生成。
所謂“構造函數”,就是專門用來生成“對象”的函數。它提供模板,作為對象的基本結構。一個構造函數,可以生成多個對象,這些對象都有相同的結構。
最后,還是模糊的話,建議參考這本在線教程:JavaScript 標准參考教程(alpha)
鏈接:https://www.zhihu.com/question/23344518/answer/24291199