Apa gunanya bind()
dalam JavaScript?
javascript
function
bind
Sandeep Kumar
sumber
sumber
select = document.querySelector.bind(document)
this
kalau tidak akan merujuk padawindow
, objek global. Dengandocument.querySelector.bind(document)
, kami memastikan bahwaselect
'sthis
mengacu padadocument
, dan tidakwindow
. Seseorang mengoreksi saya jika saya salah paham.Jawaban:
Bind menciptakan fungsi baru yang akan memaksa bagian
this
dalam fungsi menjadi parameter yang diteruskanbind()
.Berikut adalah contoh yang menunjukkan cara menggunakan
bind
untuk melewati metode anggota di sekitar yang memiliki yang benarthis
:Yang mencetak:
Anda juga dapat menambahkan parameter tambahan setelah parameter 1 (
this
) danbind
akan meneruskan nilai-nilai tersebut ke fungsi asli. Parameter tambahan apa pun yang Anda berikan ke fungsi terikat akan diteruskan setelah parameter terikat:Yang mencetak:
Lihat fungsi JavaScript bind untuk info lebih lanjut dan contoh-contoh interaktif.
Pembaruan: ECMAScript 2015 menambahkan dukungan untuk
=>
fungsi.=>
fungsi lebih kompak dan tidak mengubahthis
pointer dari ruang lingkup pendefinisiannya, jadi Anda mungkin tidak perlubind()
sering menggunakannya . Misalnya, jika Anda ingin fungsi aktifButton
dari contoh pertama untuk menghubungkanclick
panggilan balik ke acara DOM, berikut ini semua cara yang sah untuk melakukan itu:Atau:
Atau:
sumber
var Note = React.createClass({ add: function(text){ ... }, render: function () { return <button onClick={this.add.bind(null, "New Note")}/> } }
maka ketika tombol diklik, itu akan melewati teks parameter "Catatan Baru" keadd
metode.Penggunaan paling sederhana
bind()
adalah membuat fungsi yang, tidak peduli bagaimana namanya, dipanggil denganthis
nilai tertentu .Silakan merujuk tautan ini untuk informasi lebih lanjut
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
sumber
prototype
) yang mungkin baru bagi pemula.mengikat memungkinkan-
Misalnya, Anda memiliki fungsi untuk mengurangi biaya klub bulanan
Sekarang Anda ingin menggunakan kembali fungsi ini untuk anggota klub yang berbeda. Perhatikan bahwa biaya bulanan akan bervariasi dari anggota ke anggota.
Bayangkan Rachel memiliki saldo 500, dan biaya keanggotaan bulanan 90.
Sekarang, buat fungsi yang dapat digunakan berulang-ulang untuk mengurangi biaya dari akunnya setiap bulan
Sekarang, fungsi getMonthlyFee yang sama dapat digunakan untuk anggota lain dengan biaya keanggotaan yang berbeda. Misalnya, Ross Geller memiliki saldo 250 dan biaya bulanan 25
sumber
Dari dokumen MDN pada
Function.prototype.bind()
:Jadi, apa artinya itu ?!
Baiklah, mari kita fungsi yang terlihat seperti ini:
Sekarang, mari kita ambil objek yang terlihat seperti ini:
Kita dapat mengikat fungsi kita ke objek kita seperti ini:
Sekarang, kita dapat menjalankan
Obj.log
di mana saja dalam kode kita:Ini berfungsi, karena kita mengikat nilai
this
ke objek kitaObj
.Di mana itu benar-benar menarik, adalah ketika Anda tidak hanya mengikat nilai
this
, tetapi juga untuk argumennyaprop
:Kita sekarang dapat melakukan ini:
Berbeda dengan dengan
Obj.log
, kita tidak harus lulusx
atauy
, karena kita melewati nilai-nilai itu ketika kita melakukan ikatan kita.sumber
Variabel memiliki cakupan lokal dan global. Misalkan kita memiliki dua variabel dengan nama yang sama. Satu didefinisikan secara global dan yang lainnya didefinisikan di dalam penutupan fungsi dan kami ingin mendapatkan nilai variabel yang ada di dalam penutupan fungsi. Dalam hal ini kami menggunakan metode bind () ini. Silakan lihat contoh sederhana di bawah ini:
sumber
Ringkasan:
The
bind()
Metode mengambil sebuah objek sebagai argumen pertama dan menciptakan fungsi baru. Ketika fungsi dipanggil nilaithis
dalam fungsi tubuh akan menjadi objek yang dilewatkan sebagai argumen dalambind()
fungsi.Bagaimana
this
kerjanya di JS pulaNilai
this
dalam javascript tergantung selalu tergantung pada objek apa fungsi dipanggil. Nilai ini selalu mengacu pada objek yang tersisa dari titik dari mana fungsi dipanggil . Dalam hal lingkup global ini adalahwindow
(atauglobal
dalamnodeJS
). Hanyacall
,apply
danbind
dapat mengubah ikatan ini secara berbeda. Berikut ini contoh untuk menunjukkan cara kerja kata kunci ini:Bagaimana bind digunakan?
Bind dapat membantu dalam mengatasi kesulitan dengan
this
kata kunci dengan memiliki objek tetap di manathis
akan merujuk. Sebagai contoh:Setelah fungsi terikat ke
this
nilai tertentu, kita dapat menyebarkannya dan bahkan meletakkannya di properti pada objek lain. Nilaithis
akan tetap sama.sumber
obj
objek adalah karena titik kiri dan objekwindow
adalah karena singkatanwindow.custFunc()
danwindow
titik kiri sangat wawasan bagi saya.Saya akan menjelaskan ikatan secara teoritis maupun praktis
bind di javascript adalah metode - Function.prototype.bind. bind adalah metode. Ini disebut prototipe fungsi. Metode ini menciptakan fungsi yang tubuhnya mirip dengan fungsi yang dipanggil tetapi 'ini' mengacu pada parameter pertama yang dilewatkan ke metode bind. Sintaksnya adalah
Contoh:--
sumber
Metode bind () membuat instance fungsi baru yang nilainya terikat dengan nilai yang diteruskan ke bind (). Sebagai contoh:
Di sini, fungsi baru bernama objectSayColor () dibuat dari sayColor () dengan memanggil bind () dan meneruskan objek o. Fungsi objectSayColor () memiliki nilai ini setara dengan o, jadi memanggil fungsi, bahkan sebagai panggilan global, menghasilkan string "biru" yang ditampilkan.
Referensi: Nicholas C. Zakas - JAVASCRIPT® PROFESIONAL UNTUK PEMBANGUN WEB
sumber
Membuat Fungsi baru dengan Mengikat Argumen ke Nilai
The
bind
Metode menciptakan fungsi baru dari fungsi lain dengan satu atau lebih argumen terikat nilai-nilai tertentu, termasuk implisitthis
argumen.Aplikasi Parsial
Ini adalah contoh aplikasi parsial . Biasanya kami menyediakan fungsi dengan semua argumennya yang menghasilkan nilai. Ini dikenal sebagai aplikasi fungsi. Kami menerapkan fungsi untuk argumennya.
Fungsi Orde Tinggi (HOF)
Aplikasi parsial adalah contoh dari fungsi urutan yang lebih tinggi (HOF) karena menghasilkan fungsi baru dengan jumlah argumen yang lebih sedikit.
Mengikat Banyak Argumen
Anda dapat menggunakan
bind
untuk mengubah fungsi dengan banyak argumen menjadi fungsi baru.Konversi dari Metode Instance ke Fungsi Statis
Dalam kasus penggunaan yang paling umum, ketika dipanggil dengan satu argumen
bind
metode akan membuat fungsi baru yang memilikithis
nilai terikat ke nilai tertentu. Akibatnya ini mengubah metode contoh ke metode statis.Menerapkan CallBack Stateful
Contoh berikut menunjukkan bagaimana menggunakan pengikatan
this
dapat mengaktifkan metode objek untuk bertindak sebagai panggilan balik yang dapat dengan mudah memperbarui keadaan suatu objek.sumber
Seperti yang disebutkan,
Function.bind()
memungkinkan Anda menentukan konteks yang akan dieksekusi oleh fungsi tersebut (yaitu, ia memungkinkan Anda meneruskan objek apa yangthis
akan diselesaikan oleh kata kunci di tubuh fungsi.Beberapa metode API toolkit analog yang melakukan layanan serupa:
jQuery.proxy ()
Dojo.hitch ()
sumber
sumber
Pertimbangkan Program Sederhana yang tercantum di bawah ini,
sumber
Fungsi bind menciptakan fungsi baru dengan fungsi tubuh yang sama dengan fungsi yang dipanggil. Disebut dengan argumen ini. Mengapa kita menggunakan bind fun. : ketika setiap kali instance baru dibuat dan kami harus menggunakan instance awal pertama maka kami menggunakan bind fun. Kami tidak dapat mengesampingkan bind fun. hanya menyimpan objek awal kelas.
sumber
Penggunaan lain adalah bahwa Anda dapat melewatkan fungsi terikat sebagai argumen ke fungsi lain yang beroperasi di bawah konteks eksekusi lain.
sumber
Contoh sederhana
sumber
Metode Bind
Implementasi bind mungkin terlihat seperti ini:
Fungsi bind dapat mengambil sejumlah argumen dan mengembalikan fungsi baru .
Fungsi baru akan memanggil fungsi asli menggunakan
Function.prototype.apply
metode JS .The
apply
metode akan menggunakan argumen pertama diteruskan ke fungsi target sebagai konteksnya (this
), dan argumen array kedua dariapply
metode akan menjadi kombinasi dari sisa argumen dari fungsi target, concat dengan argumen yang digunakan untuk memanggil kembali para fungsi (dalam urutan itu).Contoh dapat terlihat seperti ini:
sumber
Penjelasan Sederhana:
bind () membuat fungsi baru, referensi baru pada fungsi yang dikembalikan kepada Anda.
Pada parameter setelah kata kunci ini, Anda memasukkan parameter yang ingin Anda konfigurasikan sebelumnya. Sebenarnya tidak langsung dieksekusi, hanya persiapan untuk eksekusi.
Anda dapat mengonfigurasikan sebanyak mungkin parameter yang Anda inginkan.
Contoh sederhana untuk memahami ikatan:
sumber
bind adalah fungsi yang tersedia dalam prototipe skrip java, seperti namanya bind digunakan untuk mengikat pemanggilan fungsi Anda ke konteks mana pun yang Anda hadapi misalnya::
sumber