Thạc Sĩ Lập trình hướng đối tượng trong javascript và các kiểu mẫu thiết kế

Thảo luận trong 'THẠC SĨ - TIẾN SĨ' bắt đầu bởi Phí Lan Dương, 12/8/14.

  1. Phí Lan Dương

    Phí Lan Dương New Member
    Thành viên vàng

    Bài viết:
    18,524
    Được thích:
    18
    Điểm thành tích:
    0
    Xu:
    0Xu
    #1 Phí Lan Dương, 12/8/14
    Last edited by a moderator: 12/8/14
    LỜI NÓI ĐẦU
    Tài liệu được viết giống như 1 bản ghi chép, ghi lại những thứ mà mình đã đọc được từ các ebook tiếng anh, do vậy bố cục sắp xếp của nó có thể chưa chính xác, cách trình bày không theo chuẩn 1 ebook nào cả và nhiều chỗ viết chưa rõ nghĩa và không mạch lạc do hạn chế về ngoại ngữ của bản thân mình. Tài liệu mang đậm tính chất cá nhân do vậy bạn sẽ bắt gặp trong tài liệu này nhiều đoạn kí tự in đậm, in màu, cỡ chữ lớn bất thường và được tô màu khác nhau - đó là các đoạn có liên quan đến nhau hay là những ghi chú quan trọng mà bạn cần phải đọc kĩ.
    Nội dung trong tài liệu này được dựa trên các cuốn ebook: “JavaScript Patterns - Stoyan Stefanov”, “Object-Oriented JavaScript - Stoyan Stefanov”, “JavaScript: The Good Parts - Douglas Crockford”, và 1 số bài viết của các tác giả mà mình không còn nhớ rõ nữa.
    Trước khi đọc tài liệu này, bạn phải xác định mình nắm rõ những gì thuộc về cơ bản nhất của Javascript như các cách khai báo, các kiểu dữ liệu cơ bản, các phép toán số học, các mệnh đề điều kiện, (nếu bạn có kiến thức về 1 ngôn ngữ lập trình cơ bản nào đó, thì bạn sẽ làm quen với những gì tài liệu này bỏ qua trong Javascript 1 cách rất nhanh chóng). Tài liệu này chỉ tập trung vào những gì được coi là đặc biệt nhất của Javascript so với các ngôn ngữ lập trình thông dụng khác, không phải dành cho những người mới bắt đầu học Javascript. 1 điểm nữa bạn cần lưu ý là trong tài liệu này lược bỏ phần tương tác giữa Javascript với DOM & Browser bởi vì bản thân mình dùng Jquery để thay thế.
    Nếu bạn sử dụng Javascript kết hợp với Phonegap để tạo ra các ứng dụng cho các nền tảng mobile, thì các tài liệu sau có thể bạn sẽ quan tâm tới :
     “Phonegap cho người mới học”: http://www.slideshare.net/myloveforyounqt/phonegap-cho-nguoi-moi-hoc
     “Cách tối ưu hóa môi trường lập trình ứng dụng cho Android”: http://www.slideshare.net/mylovefor...p-trnh-ng-dng-cho-android-tng-tc-my-o-android
     Hoặc đơn giản truy cập vào thư mục chia sẻ sau: http://sdrv.ms/VoAXBi

    MỤC LỤC
    LỜI NÓI ĐẦU 6
    I.Hàm function 7
    1.1.Kiến thức nền về hàm function 7
    1.1.1.Cách tối thiểu hóa số biến toàn cục . 8
    1.2.Định nghĩa thuật ngữ . 13
    1.3.So sánh giữa việc khai báo với biểu thức : tên names và sự leo thang hoisting . 15
    1.4.Thuộc tính name của hàm function 16
    1.5.Sự leo thanh của hàm function - Function Hoisting 17
    1.6.Kiểu mẫu callback . 19
    1.6.1.Một ví dụ mẫu về callback 19
    1.6.2.Hàm callback và phạm vi tồn tại của biến trong hàm callback . 22
    1.6.3.Lắng nghe sự kiện không đồng bộ . 24
    1.6.4.Độ trễ Timeouts 25
    1.6.5.Hàm callbacks trong các thư viện 25
    1.6.6.Cách trả về trong hàm functions 25
    1.6.7.Các hàm functions tự định nghĩa . 27
    1.6.8.Các hàm functions tức thời . 29
    1.6.8.1.Các tham số của 1 hàm tức thời 30
    1.6.8.2.Các giá trị được trả về từ các hàm tức thời . 31
    1.6.8.3.Cách sử dụng và ưu điểm . 33
    1.6.9.Cách khởi tạo các đối tượng tức thời . 34
    1.6.10.Phân nhánh thời gian khởi tạo - Init-Time Branching 35
    1.6.11.Các thuộc tính của functions – kiểu mẫu tối ưu hóa bộ nhớ Memoization Pattern 37
    1.6.12.Các đối tượng cấu hình - Configuration Objects 39
    1.6.13.Curry 41
    1.6.14.Function Application 41
    1.6.15.Partial Application 42
    1.6.16.Currying . 44
    1.6.17.khi nào ta sử dụng Currying 47
    II.Tử mảng arrays cho tới các đối tượng objects 48
    2.1.Các phần tử, các thuộc tính, các phương thức 50
    Lập trình hướng đối tượng trong Javascript và các kiểu mẫu thiết kế
    Ngô Quang Trung – email: [email protected] / www.phonegap.vn/forum 2
    2.2.Các mảng arrays kết hợp 50
    2.3.Các truy cập vào các thuộc tính của đối tượng . 51
    2.4.Cách gọi các phương thức của 1 đối tượng 53
    2.5.Cách biến đổi các thuộc tính / phương thức . 54
    2.6.Các sử dụng từ khóa this 55
    2.7.Các hàm tạo constructor 55
    2.8.Đối tượng toàn cục Global Object 57
    2.9.Thuộc tính tạo . 58
    2.10.Toán tử instanceof 59
    2.11.Các hàm functions mà trả về các đối tượng objects 59
    2.12.Các chuyển tiếp các đối tượng . 61
    2.13.Cách so sánh các đối tượng objects 62
    III.Các đối tượng được xây dựng sẵn . 63
    3.1.Đối tượng object 63
    3.2.Đối tượng Mảng array . 64
    3.3.Đối tượng Function . 67
    3.3.1.Các thuộc tính của đối tượng function . 68
    3.3.2.Các phương thức trong các đối tượng objects function 71
    IV.Biểu thức chính quy . 74
    4.1.Các thuộc tính của các đối tượng Objects 74
    4.2.Các phương thức của các đối tượng regexp 76
    4.3.Các phương thức string mà nhận các biểu thức chính quy như các tham số 76
    4.3.1.search() và match() . 77
    4.3.2.replace() . 77
    4.3.3.Các hàm Replace callbacks . 78
    4.3.4.split() 80
    4.3.5.Cách chuyển tiếp 1 chuỗi string khi 1 regexp được như kì vọng 80
    4.4.Quy tắc mẫu trong biểu thức quan hệ . 81
    V.Prototype . 88
    5.1.Thuộc tính prototype . 88
    5.2.Cách thêm các phương thức và thuộc tính bằng cách sử dụng Prototype 88
    5.3.Cách sử dụng các thuộc tính và phương thức của Prototype . 90
    5.4.Các thuộc tính chính gốc so với các thuộc tính được thêm vào qua prototype 91
    Lập trình hướng đối tượng trong Javascript và các kiểu mẫu thiết kế
    Ngô Quang Trung – email: [email protected] / www.phonegap.vn/forum 3
    5.5.Ghi đè thuộc tính của prototype với thuộc tính chính gốc . 93
    5.6.Các liệt kê các thuộc tính . 94
    5.7.isPrototypeOf() 97
    5.8.Bí mật về __proto__ Link 98
    5.9.Cách làm gia tăng các đối tượng được xây dựng sẵn 100
    5.10.Một vài ghi chú về Prototype . 101
    VI.Sự kế thừa 106
    6.1.Các chuỗi móc nối prototype . 106
    6.2.Ví dụ về chuỗi móc nối prototype 107
    6.3.Cách chuyển các thuộc tính được chia sẻ vào bên trong prototype . 111
    6.4.Cách thừa kế chỉ từ prototype 113
    6.5.Hàm tạo Constructor tạm thời - new F() . 115
    6.6.Uber – truy cập đối tượng cha từ đối tượng con . 117
    6.7.Cách phân tách phần kế thừa vào trong 1 hàm function 119
    VII.Các kiểu mẫu tạo đối tượng object 120
    7.1.Các phương thức và thuộc tính riêng tư . 120
    7.1.2.Các thành viên riêng tư . 120
    7.1.3.Các phương thức được ưu tiên 121
    7.1.4.Các thiếu sót quyền riêng tư 122
    7.1.5.Object Literals và quyền riêng tư . 123
    7.1.6.Các Prototypes vả quyền riêng tư 125
    7.1.7.Cách phát hiện các hàm riêng như các phương thức public . 126
    7.2.Cách thành viên cố định static . 127
    7.2.1.Các thanh viên Public Static 128
    7.2.2.Các thành viên Private Static 130
    7.3.Các hằng số đối tượng . 133
    7.4.Kiễu mẫu chuỗi hóa - Chaining Pattern 135
    7.4.1.Ưu điểm và nhược điểm của kiểu mẫu chuỗi hóa - Chaining Pattern . 136
    7.5.Phương thức method() . 137
    VIII.Các kiễu mẫu có khả năng tái sử dụng - Code Reuse Patterns 139
    8.1.Kiểu mẫu hướng class so với các kiểu mẫu phân cấp hiện đại 139
    8.2.Kết quả như mong muốn khi sử dụng sự kế thừa theo hướng classical . 140
    8.3.Việc kế tiếp chuỗi prototype 141
    Lập trình hướng đối tượng trong Javascript và các kiểu mẫu thiết kế
    Ngô Quang Trung – email: [email protected] / www.phonegap.vn/forum 4
    8.4.Nhược điểm khi sử dụng kiểu mẫu #1 144
    8.5.Kiểu mẫu Classical Pattern #2 - Rent-a-Constructor – kiểu mẫu vay mượn hàm tạo . 145
    8.5.1.Chuỗi prototype 147
    8.5.2.Sự đa kế thừa bằng các hàm tạo vay mượn 148
    8.5.3.Ưu điểm và nhược điểm của kiểu mẫu hàm khởi tạo vay mượn . 149
    8.6.Kiểu mẫu Classical Pattern #3 - Rent and Set Prototype – kiểu mẫu vay mượn và thiết lập prototype . 149
    8.7.Kiểu mẫu Classical Pattern #4 – chia sẻ prototype . 151
    8.8.Kiểu mẫu Classical Pattern #5 – 1 hàm tạo tạm thời 152
    8.8.1.Cách lưu trữ Superclass 154
    8.8.2.Cách cài đặt lại con trỏ hàm khởi tạo 154
    8.9.Klass . 156
    8.10.Sự kế thừa hướng Prototypal 159
    8.10.1.Thảo luận 160
    8.10.2.Việc bổ sung ECMAScript 5 . 162
    8.10.3.Sự kế thừa bằng cách sao chép các thuộc tính . 162
    8.10.4.Mix-ins . 165
    8.10.5.Vay mượn các phương thức Methods 166
    8.10.6.Ví dụ : vay mượn từ 1 mảng array . 167
    8.10.7.Vay mượn và ràng buộc 168
    8.10.8.Function.prototype.bind() . 170
    IX.Kiểu mẫu thiết kế . 172
    9.1.Singleton – kiểu mẫu duy nhất . 172
    9.1.1.Cách sử dụng new . 173
    9.1.2.Thực thể trong 1 thuộc tính static 174
    9.1.3.Thực thể trong 1 bao đóng 174
    9.2.Factory – kiểu mẫu sản xuất đối tượng . 178
    9.2.1.Đối tượng Object Factory được xây dựng sẵn . 181
    9.3.Iterator – kiểu mẫu biến lặp . 182
    9.4.Façade . 185
    9.5.Proxy . 188
    9.5.1.Một ví dụ mẫu 190
    9.6.Composite . 199
    9.6.1.Vấn đề đặt ra . 199
    Lập trình hướng đối tượng trong Javascript và các kiểu mẫu thiết kế
    Ngô Quang Trung – email: [email protected] / www.phonegap.vn/forum 5
    9.6.2.Cấu trúc của kiểu mẫu composite pattern 202
    9.6.3.Các mẫu ví dụ về kiểu mẫu Composite Pattern 203
    9.6.4.Mẫu ví dụ trong JS sử dụng kiểu mẫu Composite Pattern 203
    9.6.5.Ưu điểm và nhược điểm của kiểu mẫu Composite Pattern . 208
    9.7.Observer – người quan sát . 210
    9.7.1.Mẫu ví dụ #1: việc đặt mua tạp chí 211
    X.Asynchronous patterns - Kiểu mẫu không đồng bộ 216
    10.1.Lợi ích và thách thức với lập trình không đồng bộ . 216
    10.2.Promises 218
    10.3.Khám phá Promises trong bộ công cụ JQuery . 222
    XI.ASYNCH JS : sức mạnh của đối tượng $.DEFERRED 225
    11.1.Các hàm APIS không đồng bộ của trình duyệt . 225
    11.2.Cách tạo các ứng dụng 1 cách không đồng bộ 227
    11.3.Cách hiệu chỉnh sự thất bại 228
    11.4.$.DEFERRED . 228
    11.5.Các trường hợp mẫu 232
    11.6.JQuery.Deferred và Promise 233
    11.6.1.$.Deferred . 234
    11.6.2.Phương thức deferred.resolve() . 235
    11.6.3.Phương thức deferred.reject() 235
    11.6.4.Phương thức Promise() . 236
     

    Các file đính kèm:

Đang tải...