Skip to main content

Command Palette

Search for a command to run...

⚡ Memahami Perbedaan call() dan apply() di JavaScript

Published
2 min read
⚡ Memahami Perbedaan call() dan apply() di JavaScript

Dalam JavaScript, fungsi adalah first-class citizen, artinya fungsi dapat diperlakukan seperti nilai. Salah satu kemampuan penting adalah mengendalikan konteks this secara manual menggunakan call() dan apply().

Meski keduanya mirip, ada satu perbedaan utama yang wajib dipahami: cara mengirimkan argumen.

🔹 Apa Itu call()?

call() menjalankan fungsi sambil menetapkan nilai this, lalu mengirimkan argumen satu per satu.

function greet(city, country) {
  console.log(`Hello, I am ${this.name} from ${city}, ${country}`);
}

const user = { name: "Safei" };
greet.call(user, "Solo", "Indonesia");

🔹 Apa Itu apply()?

apply() juga menjalankan fungsi sambil mengatur nilai this, tetapi argumen harus dikirim dalam array.

greet.apply(user, ["Solo", "Indonesia"]);

⚠️ Perbedaan Utama

MethodCara Kirim ArgumenEksekusi
call()argumen dipisahfunc.call(obj, a, b, c)
apply()argumen arrayfunc.apply(obj, [a, b, c])

🧠 Mana yang Harus Dipakai?

Gunakan call() ketika:

  • Kamu sudah punya argumen terpisah

  • Ingin mengeksekusi fungsi langsung dengan konteks tertentu

Gunakan apply() ketika:

  • Kamu ingin mengirimkan argumen berbentuk array

  • Kamu bekerja dengan data seperti hasil Math.max, spread, dll


💡 Catatan Modern (ES6+)

Sejak hadirnya spread operator, penggunaan apply() semakin jarang:

func.call(obj, ...argsArray);

Dengan ini, apply() tidak lagi wajib, tetapi tetap penting untuk dipahami demi memahami pola JavaScript klasik.


🎯 Kesimpulan

  • call() dan apply() sama-sama untuk mengatur nilai this.

  • Bedanya hanya pada cara mengirimkan argumen.

  • Di JavaScript modern, call() + spread sering menjadi pilihan utama.

  • Meski sederhana, keduanya adalah fondasi untuk memahami function binding, method borrowing, dan OOP style di JavaScript.

More from this blog