Bộ thiết lập (setter) cho thuộc tính ảo trong OOP JavaScript

Ngoài bộ truy cập (getter) cho thuộc tính ảo, chúng ta cũng có thể tạo bộ setter cho chúng. Trong trường hợp này, bên trong setter chúng ta cần nhận dữ liệu, tách chúng ra và ghi các phần tương ứng vào các thuộc tính công khai cần thiết.

Hãy thử làm. Chúng ta sẽ triển khai bộ setter cho thuộc tính ảo full:

javascriptclass User {
  constructor(name, surn) {
    this.name = name;
    this.surn = surn;
  }
  
  get full() {
    return this.name + ' ' + this.surn;
  }
  
  set full(full) {
    let [name, surn] = full.split(' ');
    
    this.name = name;
    this.surn = surn;
  }
}

Đơn giản hóa việc hủy cấu trúc:

javascriptclass User {
  constructor(name, surn) {
    this.name = name;
    this.surn = surn;
  }
  
  get full() {
    return this.name + ' ' + this.surn;
  }
  
  set full(full) {
    [this.name, this.surn] = full.split(' ');
  }
}

Tạo một đối tượng từ lớp:

javascriptlet user = new User('john', 'smit');

Ghi dữ liệu vào bộ setter ảo của chúng ta:

javascriptuser.full = 'eric jons';

Kiểm tra xem các thuộc tính của đối tượng đã thay đổi chưa:

javascriptconsole.log(user.name); // 'eric'
console.log(user.surn); // 'jons'
console.log(user.full); // 'eric jons'