Submit Search
Upload
5. 建構式、原型與類別
•
Download as PPTX, PDF
•
0 likes
•
209 views
Justin Lin
Follow
認識建構式之作用 理解原型鏈機制 區別原型與類別典範 善用類別語法
Read less
Read more
Technology
Report
Share
Report
Share
1 of 61
Download now
Recommended
4. 使用物件
4. 使用物件
Justin Lin
從模組到類別
從模組到類別
Justin Lin
從模組到類別
從模組到類別
Justin Lin
資料永續與交換
資料永續與交換
Justin Lin
5. 從模組到類別
5. 從模組到類別
Justin Lin
進階主題
進階主題
Justin Lin
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
物件封裝
物件封裝
Justin Lin
Recommended
4. 使用物件
4. 使用物件
Justin Lin
從模組到類別
從模組到類別
Justin Lin
從模組到類別
從模組到類別
Justin Lin
資料永續與交換
資料永續與交換
Justin Lin
5. 從模組到類別
5. 從模組到類別
Justin Lin
進階主題
進階主題
Justin Lin
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
物件封裝
物件封裝
Justin Lin
流程語法與函式
流程語法與函式
Justin Lin
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
Justin Lin
9. meta-programming
9. meta-programming
Justin Lin
14. 進階主題
14. 進階主題
Justin Lin
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Justin Lin
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Justin Lin
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Justin Lin
型態與運算子
型態與運算子
Justin Lin
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Justin Lin
11. DOM、事件與樣式
11. DOM、事件與樣式
Justin Lin
進階主題
進階主題
Justin Lin
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Justin Lin
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
10. 資料永續與交換
10. 資料永續與交換
Justin Lin
資料結構
資料結構
Justin Lin
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Justin Lin
Java SE 7 技術手冊投影片第 12 章 - 通用API
Java SE 7 技術手冊投影片第 12 章 - 通用API
Justin Lin
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Justin Lin
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - Lambda
Justin Lin
反射與類別載入器
反射與類別載入器
Justin Lin
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
More Related Content
What's hot
流程語法與函式
流程語法與函式
Justin Lin
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
Justin Lin
9. meta-programming
9. meta-programming
Justin Lin
14. 進階主題
14. 進階主題
Justin Lin
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Justin Lin
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Justin Lin
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Justin Lin
型態與運算子
型態與運算子
Justin Lin
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Justin Lin
11. DOM、事件與樣式
11. DOM、事件與樣式
Justin Lin
進階主題
進階主題
Justin Lin
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Justin Lin
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
10. 資料永續與交換
10. 資料永續與交換
Justin Lin
資料結構
資料結構
Justin Lin
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Justin Lin
Java SE 7 技術手冊投影片第 12 章 - 通用API
Java SE 7 技術手冊投影片第 12 章 - 通用API
Justin Lin
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Justin Lin
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - Lambda
Justin Lin
反射與類別載入器
反射與類別載入器
Justin Lin
What's hot
(20)
流程語法與函式
流程語法與函式
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
9. meta-programming
9. meta-programming
14. 進階主題
14. 進階主題
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
型態與運算子
型態與運算子
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
11. DOM、事件與樣式
11. DOM、事件與樣式
進階主題
進階主題
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
10. 資料永續與交換
10. 資料永續與交換
資料結構
資料結構
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 12 章 - 通用API
Java SE 7 技術手冊投影片第 12 章 - 通用API
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - Lambda
反射與類別載入器
反射與類別載入器
More from Justin Lin
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
Ch12 Spring 起步走
Ch12 Spring 起步走
Justin Lin
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin
Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin
Ch07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
Ch06 使用 JSP
Ch06 使用 JSP
Justin Lin
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
Ch04 會話管理
Ch04 會話管理
Justin Lin
Ch03 請求與回應
Ch03 請求與回應
Justin Lin
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
13.並行、平行與非同步
13.並行、平行與非同步
Justin Lin
12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
11. 常用內建模組
11. 常用內建模組
Justin Lin
9. 資料結構
9. 資料結構
Justin Lin
8. open() 與 io 模組
8. open() 與 io 模組
Justin Lin
7. 例外處理
7. 例外處理
Justin Lin
More from Justin Lin
(20)
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Ch12 Spring 起步走
Ch12 Spring 起步走
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Ch09 整合資料庫
Ch09 整合資料庫
Ch08 自訂標籤
Ch08 自訂標籤
Ch07 使用 JSTL
Ch07 使用 JSTL
Ch06 使用 JSP
Ch06 使用 JSP
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch04 會話管理
Ch04 會話管理
Ch03 請求與回應
Ch03 請求與回應
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
13.並行、平行與非同步
13.並行、平行與非同步
12. 除錯、測試與效能
12. 除錯、測試與效能
11. 常用內建模組
11. 常用內建模組
9. 資料結構
9. 資料結構
8. open() 與 io 模組
8. open() 與 io 模組
7. 例外處理
7. 例外處理
5. 建構式、原型與類別
1.
2.
5.建構式、原型與類別 • 學習目標 – 認識建構式之作用 –
理解原型鏈機制 – 區別原型與類別典範 – 善用類別語法 2
3.
封裝物件建構流程 3
4.
4
5.
定義建構式 5
6.
6
7.
• 如果建構式使用return指定了傳回值,該 傳回值就會被當作建構的結果 7
8.
• 有些函式既可以當作建構式,也可以作為 一般函式呼叫 • ES6新增了new.target 8
9.
模擬static • Math.PI • Number.MIN_SAFE_INTEGER •
Number.isSafeInteger() 9
10.
私有性模擬 10
11.
11
12.
12
13.
特性描述器 • 從ES5開始,每個特性都會有四個屬性 – value –
writable – enumerable – configurable 13
14.
• Object.getOwnPropertyDescriptor ()傳回的物件只是描述 14
15.
• 若某屬性未曾設定過,那麼預設是false 15
16.
• 陣列的length無法列舉 • 直接對物件新增特性,writable、 enumerable、configurable預設是 true •
當特性本身其實是個方法時,也會被 for..in列舉 16
17.
17
18.
不可變動的陣列 18
19.
19
20.
擴充、彌封、凍結 • Object.preventExtensions() • Object.isExtensible() •
Object.seal() • Object.freeze() 20
21.
建構式與prototype • 每個函式實例都會有個prototype特性, 基本上是Object的實例 • 不過prototype物件的constructor特 性會參考函式本身 21
22.
• 使用new建構的物件,會有個__proto__ 特性參考至建構式的prototype特性 22
23.
• 存取物件的特性時,會先在實例本身尋找, 如果有就使用 • 沒有的話,就會看看實例的原型物件上有 沒有該特性 •
各個實例間共用的特性,可以定義在建構 式的prototype 23
24.
24
25.
25
26.
• 如果要在原型上新增特性,建議將特性設 為不可列舉 26
27.
27
28.
• 想要知道實例本身是否擁有某個特性,可 以透過hasOwnProperty()方法 28
29.
29
30.
30
31.
• 可以將類陣列變得更像是陣列 • 終究不是陣列 •
instanceof用來確認物件是否為某建構 式的實例,某些程度上並不可靠 31
32.
• 想要確認某個建構式的prototype,是否 為某實例的原型 32
33.
• 如果不想要修改__proto__來指定原型 33
34.
• Object.create()函式會建立新物件, 物件的原型將被設為指定的原型物件 34
35.
原型鏈 • 存取物件的特性時,會先在實例本身尋找 • 看看實例的原型物件上有沒有該特性 •
看看原型物件的原型物件有沒有該特性 • 持續到Object.prototype為止, 35
36.
• JavaScript被稱為基於原型(Prototype- based)的物件導向語言 • ES6以後提供了模擬類別的語法,然而,這 並不改變JavaScript基於原型的本質 36
37.
37
38.
基於原型的繼承 38
39.
39
40.
40
41.
41
42.
42
43.
重新定義方法 • 如果想寫個drawFight()函式… • 在多數的情況下,檢查型態而給予不同的 流程行為,對於程式的維護性有著不良的 影響,應該避免 43
44.
• 單純地定義toString()? 44
45.
45
46.
46
47.
47
48.
定義類別 • 本質上JavaScript仍是基於原型的物件導向 • ES6的類別語法,主要是提供標準化的類別 模擬,透過語法蜜糖令程式碼變得簡潔 48
49.
49
50.
• 使用class定義的Account只能使用new 來建立實例 • 直接以函式的呼叫方式,會發生 TypeError 50
51.
定義方法 51
52.
52
53.
• 類別上定義的設值、取值方法預設是不可 列舉 53
54.
54
55.
• 若方法前加上static,那麼該方法會是個 靜態方法 55
56.
• 在類別的static方法中若出現this,代 表的是類別本身 56
57.
實作繼承 57
58.
• 類別語法的繼承,能夠繼承標準API,而且 內部實作特性以及特殊行為也會被繼承 • 例如,可以繼承Array,子型態實例的 length行為,能隨著元素數量自動調整 58
59.
• 如果沒有使用constructor定義建構式, 會自動建立預設建構式,並自動呼叫 super() • 要明確地使用super()來呼叫父類建構式, 不然new時會引發錯誤 59
60.
60
61.
super與extends • 如果對原型夠瞭解,是可以來玩玩一些試 驗,接下來的內容純綷是探討,若不感興 趣,可以直接跳過,不會影響後續章節的 內容理解。 61
Download now