0Pricing
JavaScript Academy · Pelajaran

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 4

Status 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()); // 1

Banyak 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());          // 1

Properti 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()); // 14

Konfigurasi 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)); // 15

Fungsi 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); // 30

Pemeriksaan 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.

Semua pelajaran dalam kursus ini

  1. Cara Closure Menangkap Status
  2. Variabel Privat dengan Closure
  3. Pola Modul (IIFE)
  4. Fungsi Pabrik
← Kembali ke JavaScript Academy