Bài đăng nổi bật

Hướng dẫn thay đổi thư mục root mặc định của Docker trên Linux

Hoàn cảnh: người viết gặp một trường hợp như này Được team hạ tầng cấp cho một máy chủ gồm 2 phân vùng lưu trữ, 1 phân vùng 20GB được gắn và...

07 tháng 5, 2013

Lập trình hướng đối tượng với Javascript

Đây là bài tổng kết vì các bộ quy tắc lập trình hướng đối tượng trong Javascript.
Cái lợi của nó ở đây sẽ là:
  • Code rõ ràng hơn rất nhiều.
  • Maintaince dễ hơn.
  • Code có cấu trúc hơn, dễ đọc hơn.
  • Và cuối cùng sẽ dễ dàng hơn cho những người muốn chuyển từ các ngôn ngữ như Java, C++ sang Javascript
Bài viết này mình sẽ chỉ tổng hợp lại một số ý chính cần nhớ, không dông dài (vì đọc thấy nguồn tài liệu trên mạng thì nhiều nhưng toàn "khoai" quá, đọc mãi mà cũng chỉ nắm được tí tí). Cấu trúc đại khái của một class trong Javascript nó sẽ thế này:
//hàm khởi tạo
function Classname(){
      //Khai báo các biến private
      var var1 = value;
      var var2 = value;
      //khai báo các biến public
      this.var3 = value;
      this.var4 = value;
      //Khai báo các hàm private
      function method1(){
      }
}
//Nếu Class này kế thừa một class khác thì dùng phần này
Classname.prototype = new ParentClass();
Classname.prototype.constructor = Classname;
//Khai báo thêm các biến public ở đây
Classname.prototype.var5 = value;
//Khai báo hàm public như này
Classname.prototype.method2 = function(){
}
//Khai báo hàm static và biến static như này:
Classname.var6 = value;
Classname.method = function(){
}

Và đây là bộ quy tắc:
  • Biến private chỉ có thể truy cập bằng hàm private và hàm privileged
  • Biến public có thể truy cập từ trong và ngoài của Object.
  • Biến và hàm static có thể sử dụng mà không cần khởi tạo Object
  • Một properties nếu được khai báo là một prototype thì có thể bị ghi đè.
  • Nếu khai báo một biến hoặc hàm với từ khoá var nằm độc lập (không nằm trong hàm nào của Class) thì nó sẽ được coi là một biến hoặc hàm Global.
  • Từ khoá this:
    •  Nếu khi khởi tạo đối tượng ta dùng từ khoá new, thì this sẽ là đối tượng đó.
    • Nếu không có từ khoá new thì this sẽ là một global object
    • Tốt nhất là nên có new nếu không thì sẽ chịu hậu quả khó lường khi dùng this
  •  Một nguyên tắc khi truy câp các dạng biến (cái này cho java, không phải cho javascript tuy nhiên có thể áp dụng được):
    Modifier    | Class | Package | Subclass | World
    ————————————+———————+—————————+——————————+———————
    public      |  ✔    |    ✔    |    ✔     |   ✔
    ————————————+———————+—————————+——————————+———————
    protected   |  ✔    |    ✔    |    ✔     |   ✘
    ————————————+———————+—————————+——————————+———————
    no modifier |  ✔    |    ✔    |    ✘     |   ✘
    ————————————+———————+—————————+——————————+———————
    private     |  ✔    |    ✘    |    ✘     |   ✘
Một số lưu ý:
  • Unconfirm: nếu một biến là undefine thì trong các phép toán boolean nó sẽ có giá trị là false.