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)); // BudiGetter 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)`.