← Kembali ke kursus
Pelajaran kursus · JavaScript
Pelajaran 20

Class dan constructor

class, constructor, method, static, getter/setter.

Pahami konsepnya

class Siswa { constructor(nama, poin) { this.nama = nama; this.poin = poin; } } — class membuat cetakan objek dengan constructor yang otomatis berjalan saat new Siswa(). Method dideklarasikan tanpa kata function: tambah(n) { this.poin += n; }.

Static method milik class itu sendiri, bukan instance: static bandingkan(a, b) dipanggil lewat Siswa.bandingkan(). Getter/setter: get poinTotal() { return this.poin * 10; } — dipanggil tanpa kurung seperti properti.

Private field (ES2022): #nama dengan tanda pagar — tidak bisa diakses dari luar class. Ini enforcement sungguhan (bukan konvensi underscore) — error bila diakses dari luar.

Coba contoh kode

class Siswa {
  #sandi;  // private field

  constructor(nama, poin = 0) {
    this.nama = nama;
    this.poin = poin;
    this.#sandi = "rahasia";
  }

  tambah(n) { this.poin += n; }

  get status() {
    return this.poin >= 70 ? "lulus" : "remedial";
  }

  set reset(v) { this.poin = v; }

  static bandingkan(a, b) {
    return a.poin > b.poin ? a.nama : b.nama;
  }
}

const ari = new Siswa("Ari", 50);
ari.tambah(25);
console.log(ari.status);  // lulus (dipanggil tanpa kurung!)

const budi = new Siswa("Budi", 80);
console.log(Siswa.bandingkan(ari, budi));  // Budi

Getter status dipanggil tanpa kurung — seperti properti. Static bandingkan dipanggil dari class, bukan instance. #sandi benar-benar private — ari.#sandi dari luar error.

Latihan singkat

Uji: Siswa("Ari",17).info() harus `Ari (17)`.