Apps Artificial Intelligence CSS DevOps Go JavaScript Laravel Linux MongoDB MySQL PHP Python Rust Vue

JavaScript: Private Methods dan Fields yang Harus Kamu Tahu

1 min read .
JavaScript: Private Methods dan Fields yang Harus Kamu Tahu

Sebagai developer, saya selalu nyari cara bikin kode lebih aman dan mudah dipelihara. Kadang ngerasa frustasi kalau properti atau method kelas kebuka ke mana-mana tanpa kontrol. Nah, JavaScript punya solusi: private methods dan fields. Dengan ini, kita bisa sembunyikan data dan fungsi penting di dalam kelas, bikin kode lebih rapi dan aman.

Apa Itu Private Methods dan Fields?

Sederhananya, ini properti dan metode yang cuma bisa diakses dari dalam kelas itu sendiri. Ditandai pakai #. Coba bayangin kayak lemari rahasia di kelas—kalau nggak punya kunci (#), nggak bisa buka.

Keuntungan:

  • Encapsulation: Menjaga data internal tetap tersembunyi.
  • Keamanan: Nggak ada yang bisa utak-atik properti private dari luar.
  • Maintainability: Interface kelas lebih jelas dan mudah dipelihara.

Contoh Penggunaan

1. Private Fields

class Person {
  #name;

  constructor(name) {
    this.#name = name;
  }

  getName() {
    return this.#name;
  }
}

const person = new Person('Alice');
console.log(person.getName()); // 'Alice'
console.log(person.#name); // Error: private field

2. Private Methods

class Counter {
  #count = 0;

  #increment() {
    this.#count++;
  }

  publicIncrement() {
    this.#increment();
    return this.#count;
  }
}

const counter = new Counter();
console.log(counter.publicIncrement()); // 1
console.log(counter.#increment()); // Error

Kenapa Pakai Private Methods dan Fields?

  • Lindungi Data Sensitif: Misal password atau saldo rekening.
  • Pisahkan Concerns: Publik vs privat lebih jelas.
  • Hindari Konflik Nama: Cocok kalau kelas mau di-extend.

Contoh Kasus Nyata

Internal Logic

class BankAccount {
  #balance = 0;

  #logTransaction(amount) {
    console.log(`Transaksi ${amount} berhasil.`);
  }

  deposit(amount) {
    this.#balance += amount;
    this.#logTransaction(amount);
  }

  getBalance() {
    return this.#balance;
  }
}

Hiding Sensitive Info

class User {
  #password;

  constructor(password) {
    this.#password = password;
  }

  checkPassword(input) {
    return input === this.#password;
  }
}

Batasan

  • Tidak Bisa Diakses dari Luar Kelas (termasuk subclass).
  • Browser Lawas Tidak Mendukung → gunakan Babel kalau perlu.

Kesimpulan

Private methods dan fields bikin kode lebih aman, bersih, dan mudah dipelihara. Gini deh, kalau kamu pernah kena bug karena properti kelas diubah sembarangan, fitur ini bakal jadi penyelamat. Pada akhirnya, cukup tambahkan # dan data pentingmu tetap terkunci rapih di dalam kelas.

Lihat Juga

chevron-up