Metode bind() Fungsi JavaScript digunakan untuk membuat fungsi baru. Saat sebuah fungsi dipanggil, ia memiliki kata kunci this sendiri yang disetel ke nilai yang diberikan, dengan urutan argumen tertentu Show SintaksisParameterthisArg - Nilai this diteruskan ke fungsi target argumen1,argu2,. ,argn - Ini mewakili argumen untuk fungsi tersebut Nilai PengembalianIni mengembalikan replika dari fungsi yang diberikan sepanjang memberikan nilai ini dan argumen awal Contoh metode fungsi bind() JavaScriptContoh 1Mari kita lihat contoh sederhana dari metode bind() Uji SekarangKeluaran Contoh 2Mari kita lihat contoh metode bind() Uji SekarangKeluaran Javatpoint Oracle Javatpoint Karena siswa2 tidak memiliki metode _8, kami meminjamnya dari siswa1 menggunakan fungsi bind() 0 mengembalikan salinan 8 dan menugaskannya ke hasilContoh 2. Menggunakan Metode bind() dengan dua Parameter _Keluaran Jimmy scored 95 in an exam. Dalam contoh di atas, kami telah melewati dua parameter thisArg dan arg1 di Objek student2 diteruskan sebagai parameter _1 dan 95 diteruskan sebagai argumen untuk parameter skor Sekarang, sebuah program sederhana untuk mencetak nama yang dipanggil oleh kata kunci ini ketika fungsi printFunc() dipanggil
//no output is produced by this code//0 //no output is produced by this code//1 //no output is produced by this code//2 //no output is produced by this code//3 //no output is produced by this code//4 //no output is produced by this code//5 //no output is produced by this code//09 //no output is produced by this code//10 //no output is produced by this code//11 //no output is produced by this code//5 //no output is produced by this code//13 //no output is produced by this code//14________7______15 Saat meneruskan metode objek sebagai panggilan balik, misalnya ke 6, ada masalah yang diketahui. "kehilangan _7"Dalam bab ini kita akan melihat cara untuk memperbaikinya Kami telah melihat contoh kehilangan 7. Setelah metode diteruskan ke suatu tempat secara terpisah dari objek – 7 hilangInilah yang mungkin terjadi dengan 6
Seperti yang bisa kita lihat, output menunjukkan bukan “John” sebagai 1, tetapi 2Itu karena _6 mendapatkan fungsi 4, terpisah dari objek. Baris terakhir dapat ditulis ulang sebagai
Metode _6 dalam browser sedikit istimewa. itu menetapkan _6 untuk pemanggilan fungsi (untuk Node. js, _7 menjadi objek pengatur waktu, tetapi tidak terlalu penting di sini). Jadi untuk _1 mencoba untuk mendapatkan 9, yang tidak ada. Dalam kasus serupa lainnya, biasanya 7 menjadi 2Tugasnya cukup khas – kami ingin meneruskan metode objek di tempat lain (di sini – ke penjadwal) di mana ia akan dipanggil. Bagaimana cara memastikan bahwa itu akan dipanggil dalam konteks yang benar? Solusi paling sederhana adalah dengan menggunakan fungsi pembungkus
Sekarang berfungsi, karena menerima _2 dari lingkungan leksikal luar, dan kemudian memanggil metode secara normalSama, tapi lebih pendek
Terlihat bagus, tetapi sedikit kerentanan muncul di struktur kode kami Bagaimana jika sebelum _6 dipicu (ada penundaan satu detik. ) _2 mengubah nilai?
Solusi selanjutnya menjamin hal seperti itu tidak akan terjadi Fungsi menyediakan pengikatan metode bawaan yang memungkinkan untuk memperbaiki 7Sintaks dasarnya adalah
Hasil dari _6 adalah "objek eksotis" seperti fungsi khusus, yang dapat dipanggil sebagai fungsi dan secara transparan meneruskan panggilan ke pengaturan 7 8Dengan kata lain, memanggil _9 seperti 7 dengan 7 tetapMisalnya, di sini 2 meneruskan panggilan ke 7 dengan 4
Di sini _5 sebagai "varian terikat" dari 7, dengan 4 tetapSemua argumen diteruskan ke _7 asli "sebagaimana adanya", misalnya
Sekarang mari kita coba dengan metode objek
Di baris 9 kami mengambil metode 4 dan mengikatnya ke 2. _2 adalah fungsi "terikat", yang dapat dipanggil sendiri atau diteruskan ke 6 - tidak masalah, konteksnya akan benarDi sini kita dapat melihat bahwa argumen disampaikan "sebagaimana adanya", hanya 7 yang diperbaiki oleh 5
Metode kenyamanan. Jika sebuah objek memiliki banyak metode dan kami berencana untuk menyebarkannya secara aktif, maka kami dapat mengikat semuanya dalam satu lingkaran 0Pustaka JavaScript juga menyediakan fungsi untuk pengikatan massal yang nyaman, mis. g. di lodash Sampai saat ini kita hanya berbicara tentang mengikat 7. Mari kita melangkah lebih jauhKami tidak hanya dapat mengikat _7, tetapi juga argumen. Itu jarang dilakukan, tetapi terkadang bisa bergunaSintaks lengkap dari 5 1Ini memungkinkan untuk mengikat konteks sebagai _7 dan memulai argumen dari fungsi tersebutMisalnya, kita memiliki fungsi perkalian 1 2Mari gunakan _5 untuk membuat fungsi 3 pada basisnya 3Panggilan ke 4 membuat fungsi baru 3 yang meneruskan panggilan ke 6, memperbaiki 7 sebagai konteks dan 8 sebagai argumen pertama. Argumen lebih lanjut dilewatkan "sebagaimana adanya"Itu disebut aplikasi fungsi parsial – kami membuat fungsi baru dengan memperbaiki beberapa parameter yang sudah ada Harap dicatat bahwa kami sebenarnya tidak menggunakan 7 di sini. Tapi _5 membutuhkannya, jadi kita harus memasukkan sesuatu seperti 7Fungsi _2 dalam kode di bawah melipatgandakan nilainya 4Mengapa kita biasanya membuat fungsi parsial? Manfaatnya adalah kita dapat membuat fungsi independen dengan nama yang dapat dibaca ( 3, 2). Kami dapat menggunakannya dan tidak memberikan argumen pertama setiap saat karena sudah diperbaiki dengan 5Dalam kasus lain, aplikasi parsial berguna ketika kita memiliki fungsi yang sangat umum dan menginginkan varian yang kurang universal untuk kenyamanan Misalnya, kita memiliki fungsi ________60______6. Kemudian, di dalam objek _2 kita mungkin ingin menggunakan sebagian variannya. _8 yang dikirim dari pengguna saat iniBagaimana jika kita ingin memperbaiki beberapa argumen, tetapi bukan konteksnya 7? Asli _5 tidak mengizinkan itu. Kita tidak bisa begitu saja menghilangkan konteksnya dan beralih ke argumenUntungnya, fungsi _1 hanya untuk mengikat argumen dapat dengan mudah diimplementasikanSeperti ini 5Hasil dari 2 panggilan adalah pembungkus 9 yang memanggil 7 dengan
Sangat mudah melakukannya dengan sintaks spread, bukan? Juga ada implementasi siap pakai dari perpustakaan lodash Metode _3 mengembalikan "varian terikat" dari fungsi 7 yang memperbaiki konteks 7 dan argumen pertama jika diberikanBiasanya kami menerapkan _5 untuk memperbaiki 7 untuk metode objek, sehingga kami dapat meneruskannya ke suatu tempat. Misalnya, ke 6Saat kami memperbaiki beberapa argumen dari fungsi yang ada, fungsi yang dihasilkan (kurang universal) disebut diterapkan sebagian atau sebagian Partial nyaman ketika kita tidak ingin mengulangi argumen yang sama berulang kali. Seperti jika kita memiliki fungsi _9, dan 00 harus selalu sama untuk tugas kita, kita bisa mendapatkan sebagian dan melanjutkannya
Kapan menggunakan bind dalam JavaScript?Kami menggunakan metode Bind() untuk memanggil fungsi dengan nilai this , kata kunci ini mengacu pada objek yang sama yang saat ini dipilih. Dengan kata lain, metode bind() memungkinkan kita untuk dengan mudah mengatur objek mana yang akan diikat oleh kata kunci this ketika suatu fungsi atau metode dipanggil.
Bagaimana cara memanggil () menerapkan () dan mengikat () dalam JavaScript?Gunakan. panggilan() atau. apply() saat Anda ingin segera menjalankan fungsi, dan mengubah konteksnya. Panggil/terapkan segera panggil fungsi, sedangkan bind mengembalikan fungsi yang, saat dieksekusi nanti, akan memiliki konteks yang benar untuk memanggil fungsi aslinya . |