Rumah  >  Artikel  >  hujung hadapan web  >  Gunakan gunakan dan ikat dalam JS untuk menghantar nombor dinamik parameter kepada fungsi atau kemahiran class_javascript

Gunakan gunakan dan ikat dalam JS untuk menghantar nombor dinamik parameter kepada fungsi atau kemahiran class_javascript

WBOY
WBOYasal
2016-05-16 15:03:441580semak imbas

Untuk memperingati 10 tahun tidak menulis blog, mari mulakan catatan blog pertama saya dengan petua yang menarik -___-

Dalam ES5, apabila kita memanggil fungsi, jika parameter yang akan dihantar dijana berdasarkan fungsi atau syarat lain, iaitu, apabila tidak pasti berapa banyak parameter yang akan dihantar, fungsi asal akan tidak diubah. Apa yang perlu kita lakukan seterusnya?

(Sudah tentu, jika anda boleh mengelakkan situasi yang diterangkan dalam artikel ini, cuba elakkannya, seperti menukar parameter kepada objek atau tatasusunan, dsb.)


Kebanyakan orang mungkin tahu bahawa memohon boleh menyelesaikan masalah ini dengan sempurna:


Terapkan, seperti panggilan, akan menggunakan parameter pertama sebagai objek panggilan fungsi, iaitu, penunjuk ini dalam fungsi panggilan ditulis semula sebagai parameter pertama Jika ia bukan kaedah objek, anda boleh mengabaikan ini dan lulus dalam tin.

Perbezaan terletak pada parameter berikut apply meletakkan semua parameter untuk dihantar ke dalam fungsi panggilan dalam tatasusunan, dan panggilan menambahkannya dalam urutan seperti fungsi asal.


Memandangkan ia adalah tatasusunan, ia boleh dikawal Menjana tatasusunan berdasarkan fungsi lain atau pertimbangan logik boleh mencapai tujuan menghantar dalam bilangan parameter yang dinamik.

Tetapi saya mengalami sakit kepala saya perlu memasukkan parameter dinamik apabila mencipta objek dengan yang baharu. Ini adalah masalah yang saya hadapi sekali setiap beberapa tahun:


Jika anda menggunakan ES6 dan mempunyai parameter selebihnya, tiada masalah di atas akan menjadi masalah. Ambil perhatian bahawa menambah tiga titik di hadapan args tatasusunan bukanlah ralat sintaks, tetapi kaedah penulisan parameter selebihnya yang disediakan oleh ES6 Anda boleh memahaminya sebagai menggantikan...args dengan aksara selepas mengalih keluar kurungan segi empat sama dalam tatasusunan args.


Tetapi adakah benar-benar tiada cara untuk mencapainya dalam ES5? Lagipun, kebanyakan ES6 adalah gula sintaksis dan boleh disusun menjadi ES5 menggunakan alat seperti babel Jika anda mempunyai sebarang soalan, mari kita susun dengan babel dan lihat apa yang kami dapat:


Anda terkejut apabila anda melihat baris terakhir, jangan takut, mari kami menganalisis kod ini. Mula-mula, mari kita membedahnya dan melihatnya dalam tiga langkah:


1. Tidak syak lagi bahawa menggunakan concat untuk menyambung null dan parameter kami ke dalam tatasusunan, sebagai parameter kedua permohonan, kami mendapat [null, 1, 2, 3];

2. Mari kita mengira gunakan Parameter pertama Foo akan menggantikan Fungsi untuk memanggil kaedah ikatan asli Kandungan tatasusunan parameter kedua akan dihantar sebagai parameter bind, iaitu, Foo.bind(null,. 1 , 2, 3);


3. Parameter pertama kaedah bind adalah serupa dengan menggunakan dan memanggil. Ia mengubah suai penunjuk ini, dan parameter seterusnya boleh menanamkan nilai argumen utama pratetap lalai untuk fungsi, iaitu, selepas bind dilaksanakan. Dalam set kurungan pertama kita mendapat kelas Foo yang mempunyai tiga nilai parameter yang disuntik ke dalamnya, mari kita panggil FooWithArgs


Akhir sekali, apabila kita baharu FooWithArgs();, kita tidak perlu memasukkan sebarang parameter. Bersamaan dengan Foo baharu(1, 2, 3);


Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn