Saya sibuk dengan proyek android perusahaan baru -baru ini, jadi saya jarang meluangkan waktu untuk menulis sesuatu. Segera setelah saya bebas, saya melihat apa yang telah saya lihat sebelumnya. Setelah melakukan Android, saya lebih merasakan pentingnya pengembangan seluler. Sekarang, aplikasi asli dan aplikasi web adalah arus utama. Dengan kata lain, berbagai kerangka kerja aplikasi web berbasis browser akan menjadi semakin populer, dan mereka yang melakukan JS menjadi semakin menjanjikan. Saya juga memutuskan untuk secara bertahap pindah dari pengembangan back-end ke pengembangan front-end dan pengembangan seluler. Jangan bicara omong kosong, mari kita ke topik "JS Callback Function".
Berbicara tentang fungsi panggilan balik, meskipun banyak orang tahu artinya, mereka masih memiliki sedikit pemahaman. Adapun cara menggunakannya, masih agak bingung. Beberapa hal terkait di internet belum menjelaskan secara rinci apa yang terjadi, dan mereka lebih sepihak. Selanjutnya, saya hanya akan berbicara tentang pemahaman pribadi saya, jangan mengkritik saya. Mari kita lihat definisi kasar "Fungsi A memiliki parameter, dan parameter ini adalah fungsi b. Ketika fungsi A dieksekusi, fungsi B dieksekusi. Kemudian proses ini disebut panggilan balik." Kalimat ini berarti bahwa fungsi B disahkan ke fungsi A dalam bentuk parameter dan dieksekusi dalam urutan pelaksanaan A pertama, dan kemudian mengeksekusi parameter B, B adalah fungsi panggilan balik. Mari kita lihat contoh berikut.
fungsi a (callback) {alert ('a'); callback.call (this); // atau callback (), callback.apply (this), tergantung pada preferensi pribadi} fungsi b () {alert ('b'); } // hubungi (b);Hasilnya adalah 'A' muncul lebih dulu dan 'B' muncul. Dengan cara ini, seseorang mungkin bertanya, "Apa gunanya menulis kode seperti itu? Tampaknya tidak banyak berguna!"
Ya, saya benar -benar berpikir tidak ada artinya untuk menulis seperti ini, "Jika Anda memanggil fungsi, sebut saja langsung di fungsi." Saya hanya menulis contoh kecil bagi Anda untuk memberi Anda pemahaman awal. Jenis parameter ini jarang digunakan dalam proses benar -benar menulis kode, karena dalam sebagian besar skenario, kita harus lulus parameter. Berikut adalah parameter:
fungsi c (callback) {alert ('c'); callback.call (ini, 'd'); } // hubungi c (function (e) {alert (e);});Apakah panggilan ini terlihat familiar? Di sini parameter E ditugaskan ke 'D'. Kami hanya menetapkan nilai untuk menyemprotkan karakter, tetapi sebenarnya kami juga dapat menetapkan nilai ke objek. Apakah ada parameter E di jQuery? Mari kita bicarakan di bawah ini
Bagaimana parameter E dalam jQuery yang ditetapkan oleh panggilan balik?
Saya pikir semua orang akrab dengan kerangka kerja jQuery. Telah dirilis sejak lama dan digunakan selama pengembangan. Itu relatif sederhana. Sangat nyaman untuk mencari API secara online dan mudah untuk memulai. Di bawah kerangka kerja jQuery, kadang -kadang kita perlu mendapatkan beberapa parameter dalam acara tersebut, seperti koordinat klik saat ini dan objek elemen klik. Persyaratan ini mudah ditangani di jQuery:
$ ("#id"). bind ('klik', fungsi (e) {// e.pagex, e.pagey, e.target ....... berbagai data});Cukup nyaman untuk digunakan. Bahkan, penugasan parameter E ini juga dicapai melalui fungsi callback. Parameter ini diberikan nilai objek untuk menggunakan parameter callback. Teman -teman yang telah dengan cermat mempelajari kode sumber JJQuery seharusnya menemukan ini.
Ada juga prinsip yang sama dalam parameter data AJAX $ .get ('', {}, function (data) {}).
Mari kita lihat bagaimana fungsi callback diterapkan di objek acara jQuery.
Untuk kenyamanan, saya hanya menulis tentang beberapa implementasi yang terkait dengan $. Saya telah menulis sebelumnya bahwa "Xiaotan JQuery" memiliki metode yang relatif dekat dengan implementasi kerangka kerja. Saya hanya menulis pemilih sederhana di bawah ini.
<div id = "container"> </div> <script> var _ $ = function (id) {this.element = document.getElementById (id); } _ $. Prototipe = {bind: function (evt, callback) {var that = this; if (document.addeventListener) {this.element.addeventListener (evt, function (e) {callback.call (this, that.standadize (e));}, false); } else if (document.attachevent) {this.element.attachevent ('on'+evt, function (e) {callback.call (this, that.standadize (e));}); } lain this.element ['on'+evt] = function (e) {callback.call (this, that.standadize (e)); }; }, Standadize: function (e) {var evt = e || window.event; Var Pagex, Pagey, Layerx, Layery; // pagex koordinat horizontal pagey koordinat vertikal Layerx klik terletak di horizontal koordinat lapisan klik terletak pada koordinat vertikal elemen jika (evt.pagex) {pagex = evt.pagex; pagey = evt.pagey; } else {pagex = document.body.scrollleft+evt.clientx-document.body.clientleft; pagey = document.body.scrolltop+evt.clienty-document.body.clientltop; } if (evt.layerx) {layerx = evt.layerx; layery = evt.layery; } else {layerx = evt.offsetx; Layerxy = evt.offsety; } return {pagex: pagex, pagey: pagey, layerx: layerx, layery: layery}}} window. $ = function (id) {return new _ $ (id); } $ ('container'). bind ('click', function (e) {alert (e.pagex);}); $ ('container1'). bind ('klik', fungsi (e) {waspada (e.pagex);}); </script>Kami terutama melihat implementasi fungsi standadize. Saya tidak akan banyak bicara tentang kode ini, objek pengembalian
return {pagex: pagex, pagey: pagey, layerx: layerx, layery: layery}Kemudian lihat kode callback.call (this, that.standadize (e)) dalam fungsi BIND. Kode ini sebenarnya diberi nilai ke parameter E, yang diimplementasikan menggunakan callback callback.
Fungsi anonim disahkan ketika fungsi panggilan balik dipanggil
fungsi (e) {}callback.call (ini, itu.
(function (e) {}) (standadize (e))Ini juga merupakan hal klasik tentang jQuery menggunakan fungsi callback. Beginilah parameter E ditetapkan. Setelah mengatakan ini, Anda mungkin memiliki pemahaman yang baik tentang ini dan bagaimana menggunakannya.
Callback lebih sering digunakan dalam berbagai kerangka kerja. Terkadang saat menulis sesuatu sendiri, Anda juga dapat menggunakannya sesuai dengan situasi yang sebenarnya.
Tampilan di atas pada fungsi panggilan balik di JS adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.