Đối với Javascript, không phải ai cũng biết cách viết code hiệu quả và mang 1 số tính chất tiêu biểu của lập trình hướng đối tượng. Sau đây mình xin giới thiệu một phương pháp giúp giải quyết tính che giấu dữ liệu (Encapsulations) của OOP trong Javascript
Bước 1: Create module pattern
Tạo module pattern
(function () { // code })();
Với cách viết như trên thì Anonymous function này sẽ tự động gọi chính nó ngay lập tức. (Immediately-Invoked-Function-Expressions)
Bước 2: Naming module:
Sau khi tạo được module, ta cần gán cho module này 1 cái tên mới
var myModule = (function () { // code })();
Giờ đây ta đã có 1 module mới với tên là myModule.
Bước 3: Declare Propertis & Method
  • Việc khai báo Methods trong Module cũng giống như khai báo hàm(Function) trong Javascript.
  • Việc khai báo Properties trong Module cũng giống như khai báo biến(Variable) trong Javascript.
Nhìn vào đoạn code sau:
var myModule = (function () { /* Properties */ // Private Properties var _privateA; var _privateB; // Public Properties var publicA; var publicB; /* Method */ /* Private Method */ // No parameter var _privateMethodA = function() { // Do something }; // Twos parameters var _privateMethodB = function(a, b) { // Do something }; /* Public Method */ // No parameter var publicMethodA = function() { // Do something }; // One parameter var publicMethodB = function(param) { // Do something }; })();
Nhận xét:
  • Thực ra ở bước này mình chỉ muốn nói rõ về việc đặt tên và khai báo cho các Properties và Methods ở trong Module (Còn phần làm sao để public hay private sẽ hướng dẫn ở bước dưới: Return).
    Nếu Methods hoặc Properties muốn để private (không muốn bên ngoài module truy xuất vào) thì hãy đặt tên có dấu gạch dưới ‘_’ ở phía trước để phân biệt với các Methods hoặc Properties public khác.
Bước 4: Return
Nhận xét: Ở đây chúng ta sẽ return ra 1 Javascript Object. Các thuộc tính của Object này chính là những Public Methods & Properties (Như trong ví dụ trên). Những Private Methods & Properties trong myModule sẽ không được return.
Ở bên ngoài Module muốn truy xuất vào các Properties hay Methods thì sẽ gọi giống với cách gọi của class trong các ngôn ngữ lập trình.
Ví dụ:
myModule.publicA myModule.publicB myModule.publicMethodA() myModule.publicMethodB(param)
Để cho dễ hiểu đối với người mới bắt đầu thì có thể hiểu myModule là 1 class. Như vậy việc gọi và sử dụng các Methods hay Properties sẽ dễ hiểu hơn.
Dương Thanh Hải – FTI
Tin liên quan: