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.