Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

JavaScript Lanjutan

Pelajaran 11 dari 22

Fungsi, class, dan modul

Getter, setter, dan private field

Setelah pelajaran ini kamu bisa menulis property terhitung dengan get, memeriksa isian dengan set, dan menyembunyikan keadaan objek dengan private field #.

±14 menitDiperiksa 28 Sep 2026

Materi

Getter adalah method yang dibaca seperti property. Ditulis dengan kata get di depan nama method, tanpa parameter, dan dipanggil tanpa kurung: pesanan.total, bukan pesanan.total(). Nilainya dihitung ulang setiap kali dibaca, sehingga selalu mengikuti isi objek saat itu. Setter ditulis dengan kata set dan menerima tepat satu parameter; ia dijalankan ketika property itu diisi dengan tanda sama dengan, sehingga menjadi tempat memeriksa nilai sebelum disimpan.

Private field adalah property yang namanya diawali #, misalnya #celsius. Field ini wajib dideklarasikan di badan class dan hanya bisa dibaca atau diubah oleh kode di dalam class itu. Menulis objek.#celsius di luar class ditolak sebagai SyntaxError sebelum program dijalankan, dan field ini tidak muncul di Object.keys maupun JSON.stringify. Gabungan private field dengan getter tanpa setter menghasilkan property yang hanya bisa dibaca dari luar; hasilnya mirip closure di pelajaran fungsi tingkat tinggi, tetapi dalam bentuk class.

class Termometer {
  #celsius = 0;
  get celsius() {
    return this.#celsius;
  }
  set celsius(nilai) {
    if (typeof nilai !== "number") throw new TypeError("Suhu harus angka");
    this.#celsius = nilai;
  }
  get fahrenheit() {
    return (this.#celsius * 9) / 5 + 32;
  }
}
const t = new Termometer();
t.celsius = 30;
t.fahrenheit;       // 86
Object.keys(t);     // []
t.fahrenheit = 100; // TypeError di strict mode: hanya ada getter

Property yang hanya punya getter tidak bisa diisi. Di strict mode, termasuk di dalam class, modul, dan latihan ini, pengisian itu menghentikan program dengan TypeError: Cannot set property fahrenheit of #<Termometer> which has only a getter. Di luar strict mode, pengisiannya diabaikan tanpa pesan.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

class Suhu { #c = 25; } const s = new Suhu(); console.log(s.#c); Apa yang terjadi saat berkas ini dijalankan?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke