#02. Javascript hướng đối tượng – Khởi tạo Đối Tượng (Object Initializers) – Phần 2

02-javascript-huong-doi-tuong-khoi-tao-doi-tuong-object-initializers-phan-2

Chào mừng các bạn đã quay trở lại với Series Javascript – The New World. Trong bài viết này, tôi sẽ hướng dẫn một vài điểm mới trong việc khởi tạo đối tượng theo Syntax của ES6. Nếu các bạn chưa nắm rõ về Javascript hướng đối tượng thì hãy xem qua 2 bài viết bên dưới trước nhé:

Nào, bây giờ chúng ta cùng bắt đầu.

# Tóm tắt nội dung phần trước

Ở phần trước, chúng ta đã được biết qua về 3 cách khởi tạo đối tượng

  • Object Literals
  • dùng new Object() – Object constructor
  • tạo object từ mẫu đựng sẵn

Nếu các bạn muốn xem chi tiết thì xem bài  #01. Javascript hướng đối tượng – Khởi tạo Đối Tượng (Object Initialization) – Phần 1 nhé.

# Class

Đó giờ, chúng ta thường khởi tạo object theo 2 cách sau:

Cách 1: Object Literals

var employee = {
    this.name = "Nguyen Phu Hao";
    this.age = 27;
};

Cách 2: Từ mẫu định sẵn

function Employee(name, age){
    this.name = name;
    this.age = age;
}

var employee = new Employee("Nguyen Phu Hao", 27);

 Kể từ bây giờ, chúng ta có thể khởi tạo một object mới thông qua từ khóa class

class Employee{
    constructor(name, age){
        this.name = name;
        this.age = age;
    }
}
var employee = new Employee("Nguyen Phu Hao", 27);
???? Ơ,…. cách định nghĩa dùng class cũng có khác gì so với “Cách 2” bên trên đâu. Hơn nữa, dùng class thì code viết ra còn nhiều hơn.

Cái gì sinh ra cũng có lí do riêng của nó cả. Do hiện tại tôi chỉ mới dừng ở mức khởi tạo object đơn giản nên các bạn chưa thấy được lợi ích khi dùng class. Trong quá trình sử dung, tôi nhận thấy cách này sẽ có rất nhiều lợi ích trong các trường hợp sau – đây là ý kiến chủ quan của tôi:

  1. Set property ở dạng Private hay Public
  2. Linh hoạt trong việc KẾ THỪA – extends (sẽ đề cập sâu vào những phần tiếp theo)

# Class Methods

Class Methods chẳng qua cũng là method(function trong javascript) thôi. Nó sẽ có tất cả những loại method như sau:

  • Constructor method
  • Static method
  • get/set method

## Constructor method

Constructor method là một method đặc biệt. Nó sẽ làm nhiệm vụ tạo và khởi tạo object khi kết hợp với từ khóa classvà chỉ được khai báo duy nhất 1 contructor trong 1 class. Nếu khai báo nhiêu hơn thì sẽ “ăn lỗi” nhé. Đây là cú pháp

class Employee{
    constructor(name, age){
        this.name = name;
        this.age = age;
    }
}
var employee = new Employee("Nguyen Phu Hao", 27);

Một constructor có thể gọi method super để gọi đến constructor của class cha (parent class) – cái này sẽ nói sâu hơn ở bài viết liên quan đến KẾ THỪA.

## Static method

static method là loại method được gọi ngay mà không cần phải khởi tạo object instance.

Vậy câu hỏi đặt ra là: “Khi nào cần sử dụng đến static method ?

Câu trả lời tốt nhất là: “Khi nào cần gọi method mà không khởi tạo object thì dùng thôi”….. HMMM, Vậy thì ở trường hợp nào là không cần? Khi những method đó là những Utilities (tiện ích) và được dùng chung trong suốt ứng dụng của bạn. Các bạn xem ví dụ bên dưới

VD: Tạo ra 1 bộ Utilities hỗ trợ cho các việc kiểm tra và thao tác string

## get/set method

Get/Set method còn được gọi theo cách khác là Getter hay Setter (Object Accessors). Get/Set method được sinh ra với 2 mục đích chính như sau:

  • Dùng để truy cập vào private property (ở Javascript chưa có private property, bên ECMA đang cập nhật nó và sẽ public trong thời gian tới).
  • Dùng để xử lí/tính toán/set điều kiện… cho properties.

Các bạn xem ví dụ bên dưới để xem cú pháp nhé

Ví dụ này cho thấy tiện ích khi dùng getter và setter để xử lí/tính toán/set điều kiện cho properties.

Ở phần kế tiếp, tôi sẽ viết về KẾ THỪA và những lợi ích/hạn chế khi sử dụng cú pháp class của ES6 khi thao tác với đối tượng. Còn bây giờ, xin chào và hẹn gặp lại

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *