Cara menggunakan JAVASCRIPT.BIND pada JavaScript

penyegar ini

Di JS Berorientasi Objek kami belajar bahwa di JS, semuanya adalah objek. Karena semuanya adalah objek, kami memahami bahwa kami dapat mengatur dan mengakses properti tambahan ke fungsi.


Menyetel properti ke fungsi dan metode tambahan melalui prototipe sangat mengagumkan ... tapi bagaimana kita mengaksesnya?!??!

Cara menggunakan JAVASCRIPT.BIND pada JavaScript

Kami diperkenalkan dengan |_+_| kata kunci. Kami belajar bahwa setiap fungsi mendapatkan properti ini secara otomatis. Jadi pada saat ini, jika kita membuat model mental dari konteks eksekusi fungsi kita (saya bukan satu-satunya yang melakukan ini!… kan?!?!), itu akan terlihat seperti ini:

Cara menggunakan JAVASCRIPT.BIND pada JavaScript


Kami butuh beberapa saat untuk merasa nyaman dengan |_+_| kata kunci, tetapi begitu kami melakukannya, kami mulai menyadari betapa bergunanya itu. |_+_| digunakan di dalam suatu fungsi, dan akan selalu merujuk ke satu objek — objek yang memanggil (memanggil) fungsi tempat this digunakan .

Tapi hidup tidak sempurna. Terkadang, kita kehilangan |_+_| referensi. Ketika itu terjadi, kami akhirnya menggunakan peretasan yang membingungkan untuk menyimpan referensi kami ke |_+_|. Lihat peretasan yang membingungkan ini dari latihan Penyimpanan lokal kami:

Cara menggunakan JAVASCRIPT.BIND pada JavaScript


Jadi mengapa saya harus menyimpan |_+_| referensi? Karena dalam deleteBtn.addEventListener, |_+_| mengacu kepada hapusBtn obyek. Ini sangat disayangkan. Apakah ada solusi yang lebih baik?

call(), apply() dan bind() — harapan baru

Sampai sekarang kita telah memperlakukan fungsi sebagai objek yang terdiri dari sebuah nama (opsional, bisa juga fungsi anonim) dan kode yang dijalankannya saat dipanggil. Tapi itu bukan seluruh kebenaran. Sebagai orang yang mencintai kebenaran, saya harus memberi tahu Anda bahwa suatu fungsi sebenarnya terlihat lebih dekat dengan gambar berikut:

Cara menggunakan JAVASCRIPT.BIND pada JavaScript

Apa ini??? Jangan khawatir! Sekarang saya akan membahas 3 metode serupa yang muncul di setiap fungsi dengan contoh. Bersuka cita!

mengikat()

Dokumen resmi mengatakan: |_+_| metode membuat fungsi baru yang, ketika dipanggil, memiliki |_+_| kata kunci disetel ke nilai yang diberikan. (Ini sebenarnya berbicara tentang lebih banyak hal, tetapi kami akan meninggalkannya untuk lain waktu :))

Ini sangat kuat. Mari kita mendefinisikan secara eksplisit nilai |_+_| saat memanggil fungsi. Mari kita lihat cooooode:

this

Mari kita uraikan. Saat kita menggunakan |_+_| metode:

  1. mesin JS sedang membuat |_+_| . baru contoh dan pengikatan |_+_| sebagai |_+_| variabel. Penting untuk dipahami bahwa itu menyalin fungsi pokemonName.
  2. Setelah membuat salinan |_+_| fungsi itu dapat memanggil |_+_|, meskipun pada awalnya tidak ada di objek pokemon. Sekarang akan mengenali propertinya ( Panjang dan Chu) dan metodenya.

Dan yang keren adalah, setelah kita mengikat() sebuah nilai, kita dapat menggunakan fungsi tersebut seperti fungsi normal lainnya. Kami bahkan dapat memperbarui fungsi untuk menerima parameter, dan meneruskannya seperti ini:

this

panggil(), terapkan()

Dokumen resmi untuk panggilan() mengatakan : |_+_| metode memanggil fungsi dengan |_+_| . yang diberikan nilai dan argumen yang diberikan secara individual.

Artinya, apakah kita dapat memanggil fungsi apa pun, dan secara eksplisit menentukan apa this harus referensi dalam fungsi panggilan. Sangat mirip dengan |_+_| metode! Ini pasti bisa menyelamatkan kita dari penulisan kode hacky (walaupun kita semua masih hackerzzz).

Perbedaan utama antara |_+_| dan |_+_| apakah itu |_+_| metode:

  1. Menerima parameter tambahan juga
  2. Menjalankan fungsi yang dipanggil segera.
  3. |_+_| metode tidak membuat salinan dari fungsi yang dipanggil.

|_+_| dan |_+_| melayani tujuan yang sama persis. NS satu-satunya perbedaan antara cara kerjanya adalah itu call() mengharapkan semua parameter diteruskan satu per satu, sedangkan apply() mengharapkan larik dari semua parameter kita. Contoh:

this

Metode bawaan ini, yang ada di setiap fungsi JS bisa sangat berguna. Bahkan jika Anda tidak menggunakannya dalam pemrograman sehari-hari, Anda masih akan sering mengalaminya saat membaca kode orang lain.

#javascript #webdev

www.youtube.com

Apa itu Bind, Apply, Call di JavaScript

call(), apply() dan bind() Metode dalam JavaScript. Bekerja dengan JavaScript, kata kunci ini bisa jadi rumit. Anda dapat menggunakan call() / apply() untuk segera menjalankan fungsi. bind() mengembalikan fungsi terikat yang, ketika dijalankan nanti, akan memiliki konteks yang benar ('ini') untuk memanggil fungsi aslinya. Jadi bind() dapat digunakan saat fungsi perlu dipanggil nanti dalam acara tertentu saat berguna.

Apa itu binding di javascript?

Jawaban. Intinya, fungsi ".bind(this)" pada JS berguna agar referensi nilai "this" di dalam suatu fungsi tidak berubah saat dieksekusi.

Apa Itu this di javascript?

Keyword this adalah object pemilik suatu baris code yang sedang dieksekusi.