September 17, 2026

Memahami Class di JavaScript.

Cara mendeklarasikan class di JavaScript modern, constructor, method, inheritance dengan extends, serta private field.

class diperkenalkan di ES6 sebagai cara yang lebih familiar untuk membuat objek dengan struktur dan perilaku yang sama, dibanding menulis fungsi konstruktor dan prototype secara manual.

Deklarasi Class Dasar

class Produk {
  constructor(nama, harga) {
    this.nama = nama;
    this.harga = harga;
  }

  info() {
    return `${this.nama} - Rp${this.harga.toLocaleString("id-ID")}`;
  }
}

const sepatu = new Produk("Sepatu Lari", 450000);
console.log(sepatu.info()); // "Sepatu Lari - Rp450.000"

constructor adalah method khusus yang otomatis dijalankan saat objek baru dibuat lewat new.

Getter dan Setter

class Lingkaran {
  constructor(jariJari) {
    this.jariJari = jariJari;
  }

  get luas() {
    return Math.PI * this.jariJari ** 2;
  }

  set ubahJariJari(nilaiBaru) {
    this.jariJari = nilaiBaru > 0 ? nilaiBaru : this.jariJari;
  }
}

const lingkaran = new Lingkaran(5);
console.log(lingkaran.luas); // diakses seperti properti, bukan method
lingkaran.ubahJariJari = 10;

Static Method

Static method dipanggil langsung dari class, bukan dari instance-nya, biasanya dipakai untuk fungsi bantuan yang berkaitan dengan class tapi tidak butuh data instance tertentu.

class Kalkulator {
  static tambah(a, b) {
    return a + b;
  }
}

console.log(Kalkulator.tambah(3, 4)); // 7, tanpa perlu 'new Kalkulator()'

Private Field

JavaScript modern mendukung private field lewat awalan #, memastikan properti tersebut hanya bisa diakses dari dalam class itu sendiri.

class Akun {
  #saldo = 0;

  constructor(saldoAwal) {
    this.#saldo = saldoAwal;
  }

  setor(jumlah) {
    this.#saldo += jumlah;
  }

  get saldo() {
    return this.#saldo;
  }
}

const akun = new Akun(100000);
akun.setor(50000);
console.log(akun.saldo);   // 150000
console.log(akun.#saldo);  // SyntaxError — tidak bisa diakses dari luar

Inheritance dengan extends dan super

class ProdukDiskon extends Produk {
  constructor(nama, harga, persenDiskon) {
    super(nama, harga);
    this.persenDiskon = persenDiskon;
  }

  info() {
    const hargaAkhir = this.harga * (1 - this.persenDiskon / 100);
    return `${this.nama} - Rp${hargaAkhir.toLocaleString("id-ID")} (diskon ${this.persenDiskon}%)`;
  }
}

Kesimpulan

Class di JavaScript modern menyediakan cara terstruktur untuk membuat objek serupa lewat constructor dan method, dilengkapi getter/setter untuk akses properti yang lebih terkontrol, static method untuk fungsi utilitas, dan private field untuk menyembunyikan detail internal yang tidak perlu diakses dari luar.

Hey! I’m Fanny, the software engineer tending to this digital garden. You can read more about me, or subscribe by email.

Comments