Perbedaan antara metode call, apply, dan bind JavaScript

Mari menggali ke dalam pikiran kita dan menyelesaikannya, sekali dan untuk selamanya.

Saya menulis posting mikro ini karena pertanyaan tersebut telah menghantui saya untuk waktu yang sangat lama, dan saya tahu saya bukan satu-satunya. Setiap kali saya melihat seseorang menggunakan salah satu dari tiga metode tersebut, saya harus bergegas ke MDN untuk mencari tahu apa yang sedang terjadi.

Sudah cukup. Saya tahu saya harus melakukan sesuatu dan saya melakukannya. Saya seharusnya telah membuat peluru perak pepatah yang dapat membantu pengembang JavaScript baru keluar.

Penafian : Ini bukan solusi teoretis, tetapi cara yang benar-benar hack untuk mengingat perbedaannya.

Penyebab utama kebingungan antara metode call()dan apply()adalah cara meneruskan argumen tambahan di samping this. Dan mengapa kita punya bind()?

Jadi, mari belajar cara membedakan ketiganya dengan mudah.

Menerapkan()

apply(this [, [arg1, arg2,...]]): Memanggil fungsi dengan thisnilai yang diberikan . Argumen lebih lanjut disediakan sebagai larik tunggal .

Cara untuk mengingat : " A pply menerima argumen sebagai A rray" atau " AA "

Panggilan()

call(this [, arg1, arg2...]): Memanggil fungsi dengan yang disediakan this. Argumen lebih lanjut disediakan sebagai daftar yang dipisahkan koma

Cara untuk mengingat: "Argumen panggilan dipisahkan dengan koma" atau " CC ".

Mengikat()

bind(this): Mengembalikan fungsi baru yang thisnilainya terikat ke nilai yang diberikan.

Cara untuk mengingat: bind () adalah satu - satunya metode dari tiga metode yang mengembalikan fungsi baru sama sekali. Itu tidak memanggil fungsi.

Bungkus

Saya harap penjelasan di atas dapat membantu beberapa dari Anda di luar sana. Ini pasti membantu saya.

Apakah Anda memiliki trik menghafal lain yang berhubungan dengan pemrograman? Mohon bagikan dengan komunitas karena akan membantu semua orang. Apalagi saat wawancara tersebut.

Jika Anda memiliki pertanyaan atau keraguan, hubungi saya di Twitter @ rajat1saxena atau tulis kepada saya di [email protected] Silakan rekomendasikan posting ini, jika Anda menyukainya dan bagikan dengan jaringan Anda.