Fungsi Pabrik
Buat objek dengan status privat melalui closure.
Fungsi Pabrik adalah pelajaran JavaScript Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar JavaScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus JavaScript Academy mencakup 4 pelajaran total.
Apa Itu Fungsi Pabrik
Fungsi pabrik adalah fungsi apa pun yang mengembalikan objek baru. Berbeda dari konstruktor, Anda memanggilnya secara normal tanpa new, dan fungsi ini dapat menggunakan penutupan untuk status privat.
function createUser(name) {
return {
name,
greet: () => "Hi, I am " + name
};
}
const u = createUser("Ada");
console.log(u.greet()); // "Hi, I am Ada"Tanpa Kata Kunci new
Fungsi pabrik menghindari masalah dari new dan this. Anda cukup memanggil fungsi tersebut dan menerima objek sebagai hasilnya.
function point(x, y) {
return { x, y };
}
const p = point(3, 4);
console.log(p.x, p.y); // 3 4Status Privat melalui Penutupan
Variabel yang dideklarasikan dalam fungsi pabrik bersifat privat. Metode objek yang dikembalikan membentuk penutupan atas variabel tersebut, sama seperti pola modul, tetapi menghasilkan banyak instans.
function createCounter() {
let count = 0; // private
return {
inc: () => ++count,
get: () => count
};
}
const c = createCounter();
c.inc();
console.log(c.get()); // 1Banyak Instans yang Mandiri
Setiap pemanggilan fungsi pabrik menghasilkan objek baru dengan status privatnya sendiri. Inilah perbedaan utama dari modul instans tunggal.
function createCounter() {
let n = 0;
return { inc: () => ++n };
}
const a = createCounter();
const b = createCounter();
console.log(a.inc(), a.inc()); // 1 2
console.log(b.inc()); // 1Properti Terhitung
Fungsi pabrik dapat menurunkan nilai saat pembuatan dan membuka metode terhitung, sambil menjaga masukan tetap privat.
function rectangle(w, h) {
return {
area: () => w * h,
perimeter: () => 2 * (w + h)
};
}
const r = rectangle(3, 4);
console.log(r.area()); // 12
console.log(r.perimeter()); // 14Konfigurasi Bawaan dan Opsional
Karena berupa fungsi biasa, fungsi pabrik dapat menangani nilai bawaan dan opsi dengan rapi menggunakan destrukturisasi.
function createButton({ label = "OK", disabled = false } = {}) {
return { label, disabled };
}
console.log(createButton()); // { label: "OK", disabled: false }
console.log(createButton({ label: "Go" })); // { label: "Go", disabled: false }Komposisi, Bukan Pewarisan
Fungsi pabrik mengutamakan komposisi: bangun objek dengan mencampurkan perilaku, bukan dengan memperluas rantai kelas.
const canFly = (s) => ({ fly: () => s.name + " flies" });
function createBird(name) {
const self = { name };
return Object.assign(self, canFly(self));
}
console.log(createBird("Robin").fly()); // "Robin flies"Perilaku Bersama
Untuk berbagi metode antarinstans tanpa salinan pada setiap instans, definisikan metode tersebut sekali lalu gunakan assign. Atau terima sedikit biayanya demi manfaat privasi yang diberikan penutupan.
const behavior = {
describe() { return "id " + this.id; }
};
function createItem(id) {
return Object.assign({ id }, behavior);
}
console.log(createItem(7).describe()); // "id 7"Mengembalikan Fungsi Juga
Fungsi pabrik dapat mengembalikan fungsi, bukan objek, jika itu merupakan antarmuka yang lebih bersih, dan tetap menangkap status privat.
function multiplier(factor) {
return (n) => n * factor;
}
const triple = multiplier(3);
console.log(triple(5)); // 15Fungsi Pabrik dan Konstruktor
Konstruktor menggunakan new, this, dan rantai prototipe. Fungsi pabrik lebih sederhana, menghindari bug this, serta memberikan privasi nyata melalui penutupan, dengan konsekuensi metode tidak dibagikan melalui prototipe.
Validasi saat Pembuatan
Fungsi pabrik dapat memvalidasi masukan lalu menghasilkan kesalahan atau menormalkannya sebelum mengembalikan hasil, sehingga setiap objek yang dihasilkan dijamin valid.
function createAge(value) {
if (value < 0) throw new Error("age must be >= 0");
return { value };
}
console.log(createAge(30).value); // 30Pemeriksaan Cepat
Fungsi pabrik.
Ringkasan
Fungsi pabrik mengembalikan objek tanpa new atau this, dengan menggunakan penutupan untuk status privat. Setiap pemanggilan menghasilkan instans yang mandiri, serta mendukung properti terhitung, konfigurasi bawaan, komposisi, dan validasi. Fungsi pabrik menukar penggunaan bersama metode prototipe dengan kesederhanaan dan privasi nyata, sehingga menjadi alternatif bersih yang didukung penutupan untuk konstruktor.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Fungsi Pabrik” gratis?
Ya — teks lengkap “Fungsi Pabrik” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus JavaScript Academy, upgrade ke CoddyKit PRO. Kursus JavaScript Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Fungsi Pabrik”?
Buat objek dengan status privat melalui closure. Kamu berlatih JavaScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai JavaScript Academy?
Tidak diperlukan pengalaman sebelumnya. JavaScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Fungsi Pabrik” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran JavaScript Academy ini?
Ya. Setiap pelajaran JavaScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.