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
掌握this參考 運用物件實字 認識物件協定 使用符號協定
4. 使用物件
4. 使用物件
Justin Lin
深入模組管理 初識物件導向 學習定義類別 定義運算子
從模組到類別
從模組到類別
Justin Lin
《Python 3.5 技術手冊》第 5 章投影片
從模組到類別
從模組到類別
Justin Lin
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
資料永續與交換
資料永續與交換
Justin Lin
深入模組管理 初識物件導向 學習定義類別 定義運算子
5. 從模組到類別
5. 從模組到類別
Justin Lin
《Python 3.5 技術手冊》第 14 章投影片
進階主題
進階主題
Justin Lin
瞭解封裝觀念與實現 定義類別、建構式與方法 使用方法重載與不定長度引數 瞭解static成員
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
瞭解封裝觀念與實現 定義類別、建構式與方法 使用方法重載與不定長度引數 瞭解static成員
物件封裝
物件封裝
Justin Lin
Recommended
掌握this參考 運用物件實字 認識物件協定 使用符號協定
4. 使用物件
4. 使用物件
Justin Lin
深入模組管理 初識物件導向 學習定義類別 定義運算子
從模組到類別
從模組到類別
Justin Lin
《Python 3.5 技術手冊》第 5 章投影片
從模組到類別
從模組到類別
Justin Lin
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
資料永續與交換
資料永續與交換
Justin Lin
深入模組管理 初識物件導向 學習定義類別 定義運算子
5. 從模組到類別
5. 從模組到類別
Justin Lin
《Python 3.5 技術手冊》第 14 章投影片
進階主題
進階主題
Justin Lin
瞭解封裝觀念與實現 定義類別、建構式與方法 使用方法重載與不定長度引數 瞭解static成員
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
瞭解封裝觀念與實現 定義類別、建構式與方法 使用方法重載與不定長度引數 瞭解static成員
物件封裝
物件封裝
Justin Lin
認識基本流程語法 使用 for Comprehension 認識函式與變數範圍 運用一級函式特性 使用 yield 建立產生器 初探型態提示
流程語法與函式
流程語法與函式
Justin Lin
區分基本型態與類別型態 瞭解物件與參考的關係 從包裹器認識物件 以物件觀點看待陣列 認識字串的特性
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
Justin Lin
探索物件特性 判斷物件型態 認識Reflect API 結合Proxy與Reflect API
9. meta-programming
9. meta-programming
Justin Lin
運用描述器 實作裝飾器 定義 meta 類別 使用相對匯入 泛型進階
14. 進階主題
14. 進階主題
Justin Lin
Java SE 7 技術手冊
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Justin Lin
Java SE 7 技術手冊
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Justin Lin
Java SE 7 技術手冊
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Justin Lin
《Python 3.5 技術手冊》第 3 章投影片
型態與運算子
型態與運算子
Justin Lin
進階自訂泛型 進階自訂列舉 使用標準標註 自訂與讀取標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Justin Lin
認識DOM操作 處理事件 掌握樣式 建立程式庫封裝細節
11. DOM、事件與樣式
11. DOM、事件與樣式
Justin Lin
運用描述器 實作裝飾器 定義 meta 類別 使用相對匯入 泛型進階
進階主題
進階主題
Justin Lin
Java SE 7 技術手冊
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Justin Lin
瞭解串流與輸入輸出的關係 認識InputStream、OutputStream繼承架構 認識Reader、Writer繼承架構 使用輸入輸出裝飾器類別
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
10. 資料永續與交換
10. 資料永續與交換
Justin Lin
《Python 3.5 技術手冊》第 9 章投影片
資料結構
資料結構
Justin Lin
Java SE 7 技術手冊
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Justin Lin
Java SE 7 技術手冊
Java SE 7 技術手冊投影片第 12 章 - 通用API
Java SE 7 技術手冊投影片第 12 章 - 通用API
Justin Lin
Java SE 7 技術手冊
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Justin Lin
認識Lambda語法 運用方法參考 瞭解介面預設方法 善用Functional與Stream API Lambda與平行化
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - Lambda
Justin Lin
取得.class檔案資訊 動態生成物件與操作方法 認識模組與反射的權限設定 瞭解JDK9類別載入器階層 使用ClassLoader實例
反射與類別載入器
反射與類別載入器
Justin Lin
認識 Spring Boot 認識 Spring Tool Suite 遷移微網誌至 Spring Boot
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
區別程式庫與框架 逐步善用 Spring MVC 簡介 Thymeleaf 模版 使用 Spring Security
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
More Related Content
What's hot
認識基本流程語法 使用 for Comprehension 認識函式與變數範圍 運用一級函式特性 使用 yield 建立產生器 初探型態提示
流程語法與函式
流程語法與函式
Justin Lin
區分基本型態與類別型態 瞭解物件與參考的關係 從包裹器認識物件 以物件觀點看待陣列 認識字串的特性
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
Justin Lin
探索物件特性 判斷物件型態 認識Reflect API 結合Proxy與Reflect API
9. meta-programming
9. meta-programming
Justin Lin
運用描述器 實作裝飾器 定義 meta 類別 使用相對匯入 泛型進階
14. 進階主題
14. 進階主題
Justin Lin
Java SE 7 技術手冊
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Justin Lin
Java SE 7 技術手冊
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Justin Lin
Java SE 7 技術手冊
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Justin Lin
《Python 3.5 技術手冊》第 3 章投影片
型態與運算子
型態與運算子
Justin Lin
進階自訂泛型 進階自訂列舉 使用標準標註 自訂與讀取標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Justin Lin
認識DOM操作 處理事件 掌握樣式 建立程式庫封裝細節
11. DOM、事件與樣式
11. DOM、事件與樣式
Justin Lin
運用描述器 實作裝飾器 定義 meta 類別 使用相對匯入 泛型進階
進階主題
進階主題
Justin Lin
Java SE 7 技術手冊
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Justin Lin
瞭解串流與輸入輸出的關係 認識InputStream、OutputStream繼承架構 認識Reader、Writer繼承架構 使用輸入輸出裝飾器類別
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
10. 資料永續與交換
10. 資料永續與交換
Justin Lin
《Python 3.5 技術手冊》第 9 章投影片
資料結構
資料結構
Justin Lin
Java SE 7 技術手冊
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Justin Lin
Java SE 7 技術手冊
Java SE 7 技術手冊投影片第 12 章 - 通用API
Java SE 7 技術手冊投影片第 12 章 - 通用API
Justin Lin
Java SE 7 技術手冊
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Justin Lin
認識Lambda語法 運用方法參考 瞭解介面預設方法 善用Functional與Stream API Lambda與平行化
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - Lambda
Justin Lin
取得.class檔案資訊 動態生成物件與操作方法 認識模組與反射的權限設定 瞭解JDK9類別載入器階層 使用ClassLoader實例
反射與類別載入器
反射與類別載入器
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
認識 Spring Boot 認識 Spring Tool Suite 遷移微網誌至 Spring Boot
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
區別程式庫與框架 逐步善用 Spring MVC 簡介 Thymeleaf 模版 使用 Spring Security
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
使用 Gradle 結合 Gradle 與 IDE 認識相依注入 使用 Spring 核心
Ch12 Spring 起步走
Ch12 Spring 起步走
Justin Lin
寄送純文字郵件 寄送 HTML 郵件 寄送附檔郵件
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin
了解 Java EE 安全概念與名詞 使用容器基本驗證與表單驗 使用 HTTPS 保密資料傳輸
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin
了解 JDBC 架構 使用基本的 JDBC 透過 JNDI 取得DataSource 在 Web 應用程式整合資料庫
Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
使用 Tag File 自訂標籤 使用 Simple Tag 自訂標籤 使用 Tag 自訂標籤
Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin
了解何謂 JSTL 使用 JSTL 核心標籤庫 使用 JSTL 格式標籤庫 使用 JSTL XML 標籤庫 使用 JSTL 函式標籤庫
Ch07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
了解 JSP 生命週期 使用 JSP 語法元素 使用 JSP 標準標籤 使用運算式語言(EL) 自訂 EL 函式
Ch06 使用 JSP
Ch06 使用 JSP
Justin Lin
了解 Servlet 生命週期 使用 ServletConfig 與ServletContext 使用 PushBuilder 各種傾聽器的使用 繼承 HttpFilter 實作過濾器
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
了解會話管理基本原理 使用 Cookie 類別 使用 HttpSession 會話管理 了解容器會話管理原理
Ch04 會話管理
Ch04 會話管理
Justin Lin
取得請求參數與標頭 處理中文字元請求與回應 設定與取得請求範圍屬性 使用轉發、包含、重新導向
Ch03 請求與回應
Ch03 請求與回應
Justin Lin
開發環境準備與使用 了解 Web 應用程式架構 Servlet 撰寫與部署設定 了解 URI 模式對應 使用 web-fragement.xml
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
認識 HTTP 基本特性 了解何為 URI 編碼 認識 Web 容器角色 了解 Servlet 與 JSP 的關係 認識 MVC/Model 2
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
認識並行、平行與非同步 使用 threading 模組 使用 multiprocessing 模組 使用 concurrent.futures模組 運用 async、await 與 asyncio
13.並行、平行與非同步
13.並行、平行與非同步
Justin Lin
使用 pdb 模組除錯 對程式進行單元測試 使用 timeit 評測程式片段 使用 cProfile(profile)察看評測數據
12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
處理日期與時間 認識日誌的使用 運用規則表示式 管理檔案與目錄 URL 處理
11. 常用內建模組
11. 常用內建模組
Justin Lin
認識 hashable、iterable、orderable 對物件進行排序 認識群集架構 運用 collections 模組 運用 collections.abc 模組
9. 資料結構
9. 資料結構
Justin Lin
使用 open()函式 使用 stdin、stdout、stderr 認識檔案描述器 認識 io 模組
8. open() 與 io 模組
8. open() 與 io 模組
Justin Lin
使用 try、except 處理例外 認識例外繼承架構 認識 raise 使用時機 運用 finally 清除資源 使用 with as 管理資源
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