cari
Rumahhujung hadapan webtutorial jsPenjelasan terperinci tentang kemahiran function_javascript panggilan balik js

Menjadikan Apl asli dan Apl Web kini menjadi arus perdana, yang bermakna pelbagai rangka kerja aplikasi web berasaskan penyemak imbas menjadi semakin popular dan mereka yang melakukan js menjadi semakin menjanjikan. Saya juga memutuskan untuk beralih secara beransur-ansur daripada pembangunan bahagian belakang kepada pembangunan bahagian hadapan dan pembangunan mudah alih Tanpa berlengah lagi, mari kita sampai ke perkara yang berkaitan dengan "fungsi panggilan balik js".

Bercakap tentang fungsi panggil balik, walaupun ramai yang tahu maksudnya, mereka masih kurang faham. Mengenai cara menggunakannya, saya masih keliru. Sesetengah maklumat yang berkaitan di Internet tidak menerangkan secara terperinci apa yang sedang berlaku, dan penjelasannya agak berat sebelah. Di bawah ini saya hanya bercakap tentang pemahaman peribadi saya, jangan kritik orang besar. Mari kita lihat definisi kasar: "Fungsi a mempunyai parameter, iaitu fungsi b. Apabila fungsi a dilaksanakan, fungsi b dilaksanakan. Kemudian proses ini dipanggil panggil balik Ayat ini bermaksud fungsi b bermula dengan Fungsi a diluluskan sebagai parameter dan dilaksanakan Perintahnya adalah untuk melaksanakan yang pertama, dan kemudian melaksanakan parameter b ialah apa yang dipanggil fungsi panggil balik. Mari kita lihat contoh berikut dahulu.

Salin kod Kod adalah seperti berikut:

fungsi a(panggilan balik){
makluman('a');
​​callback.call(this);//or callback(), callback.apply(this), bergantung pada pilihan peribadi
}
fungsi b(){
makluman('b');
}
//Panggil
a(b);

Keputusan ini ialah 'a' muncul dahulu, dan kemudian 'b' muncul. Saya rasa seseorang akan bertanya, "Apa gunanya menulis kod sedemikian? Nampaknya tidak banyak kesan!"

Ya, sebenarnya saya juga fikir ia tidak bermakna untuk menulis seperti ini, "Jika anda memanggil fungsi, panggil saja terus dalam fungsi." Saya hanya menulis contoh kecil untuk semua orang mendapat pemahaman awal. Dalam proses menulis kod sebenarnya, parameter sedemikian jarang digunakan, kerana dalam kebanyakan senario, kita perlu lulus parameter. Ini yang mempunyai parameter:

Salin kod Kod adalah seperti berikut:
fungsi c(panggil balik){
        makluman('c');
​​callback.call(this,'d');
}
//Panggil
c(fungsi(e){
makluman(e);
});

Adakah panggilan ini kelihatan biasa? Di sini parameter e diberikan nilai 'd'. Malah, ia juga boleh ditetapkan sebagai objek. Adakah terdapat juga parameter e dalam Jquery? Mari kita bincangkan di bawah

Bagaimana parameter e dalam Jquery diberikan melalui panggilan balik.

Saya rasa semua orang sudah biasa dengan rangka kerja Jquery Ia telah lama dikeluarkan dan digunakan semasa pembangunan Ia adalah sangat mudah untuk mencari API dalam talian dan ia adalah pantas untuk bermula. Dalam rangka kerja Jquery, kadangkala kita perlu mendapatkan beberapa parameter dalam acara tersebut. Contohnya, saya ingin mendapatkan koordinat klik semasa dan objek elemen yang diklik. Keperluan ini mudah dikendalikan dalam Jquery:

Salin kod Kod adalah seperti berikut:
           $("#id").bind('klik',fungsi(e){
                  //e.pageX, e.pageY, e.target... Pelbagai data
});

Ia agak mudah digunakan Malah, penetapan parameter e juga dilaksanakan melalui fungsi panggil balik Parameter ini diberikan nilai objek menggunakan parameter panggilan balik yang sepatutnya ada menemui ini.

Prinsip yang sama digunakan pada parameter data dalam Ajax $.get('',{},function(data){}).

Mari kita lihat bagaimana fungsi panggil balik digunakan dalam objek acara Jquery.

Demi kemudahan, saya hanya menulis beberapa pelaksanaan yang berkaitan dengan $ yang telah saya tulis tentang "Small Talk about Jquery" sebelum ini, yang mempunyai kaedah yang lebih dekat dengan pelaksanaan rangka kerja di bawah.

Salin kod Kod adalah seperti berikut:




     var   _$=fungsi (id)
               {
                     this.element=  document.getElementById(id);
                }
       _$.prototaip={
            bind:function(evt,callback)
            {
                var   that=this;
                if(document.addEventListener)
                {
                    this.element.addEventListener(evt, function(e){
                        callback.call(this,that.standadize(e));
                    }  ,palsu);
                }
                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));
                    };
            },
            standardize:function(e){
                 var  evt=e||window.event;
                 var  pageX,pageY,layerX,layerY;
                 //pageX  横坐标  pageY纵坐标   layerX点击处位于元素的横坐标   layerY点击处位于元素的纵坐标                  if(evt.pageX)
                 {
                     pageX=evt.pageX;
                     pageY=evt.pageY;
                 }
                 lain
                 {
                    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;
                 }
                 lain
                 {
                     layerX=evt.offsetX;
                     layerXY=evt.offsetY;
                 }
                 kembali  {
                    pageX:pageX,
                    pageY:pageY,
                    layerX:layerX,
                    layerY:layerY
                 }
            }
       }
       tetingkap.$=function(id)
       {
          kembalikan  baru _$(id);
       }
        $('bekas').bind('klik',fungsi(e){
            makluman(e.pageX);
        });
        $('container1').bind('klik',fungsi(e){
             makluman(e.pageX);
        });

这段代码我们主要看standadize函数的实现,兼容性的代码,就不多说了,返回的是与回的是与了

复制代码 代码如下:
     kembali  {
                    pageX:pageX,
                    pageY:pageY,
                    layerX:layerX,
                    layerY:layerY
                 }

 然后再看bind函数里面的代码    callback.call(this,that.standadize(e)),这段代码其实就是给e庆实就是给e庆参记说现的。

panggil balik 函数被调用的时候传入的是匿名函数

复制代码 代码如下:
         fungsi(e){
        }

而callback.call(this,that.standadize(e))相当于是执行了这么一段代码 

复制代码 代码如下:

(Funktion(e){
          })(standadize(e))

Dies ist auch ein klassischer Ort für die Verwendung von Callback-Funktionen. So wird der e-Parameter zugewiesen. Möglicherweise wissen Sie jedoch, wie er verwendet wird.

Rückrufe werden häufig in verschiedenen Frameworks verwendet. Wenn Sie etwas selbst schreiben, können Sie es manchmal auch entsprechend der tatsächlichen Situation verwenden.

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
Membina aplikasi SaaS Multi-penyewa dengan Next.js (Integrasi Backend)Membina aplikasi SaaS Multi-penyewa dengan Next.js (Integrasi Backend)Apr 11, 2025 am 08:23 AM

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing

Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend)Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend)Apr 11, 2025 am 08:22 AM

Artikel ini menunjukkan integrasi frontend dengan backend yang dijamin oleh permit, membina aplikasi edtech SaaS yang berfungsi menggunakan Next.Js. Frontend mengambil kebenaran pengguna untuk mengawal penglihatan UI dan memastikan permintaan API mematuhi dasar peranan

JavaScript: meneroka serba boleh bahasa webJavaScript: meneroka serba boleh bahasa webApr 11, 2025 am 12:01 AM

JavaScript adalah bahasa utama pembangunan web moden dan digunakan secara meluas untuk kepelbagaian dan fleksibiliti. 1) Pembangunan front-end: Membina laman web dinamik dan aplikasi satu halaman melalui operasi DOM dan kerangka moden (seperti React, Vue.js, sudut). 2) Pembangunan sisi pelayan: Node.js menggunakan model I/O yang tidak menyekat untuk mengendalikan aplikasi konkurensi tinggi dan masa nyata. 3) Pembangunan aplikasi mudah alih dan desktop: Pembangunan silang platform direalisasikan melalui reaktnatif dan elektron untuk meningkatkan kecekapan pembangunan.

Evolusi JavaScript: Trend Semasa dan Prospek Masa DepanEvolusi JavaScript: Trend Semasa dan Prospek Masa DepanApr 10, 2025 am 09:33 AM

Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.

Demystifying JavaScript: Apa yang berlaku dan mengapa pentingDemystifying JavaScript: Apa yang berlaku dan mengapa pentingApr 09, 2025 am 12:07 AM

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Adakah Python atau JavaScript lebih baik?Adakah Python atau JavaScript lebih baik?Apr 06, 2025 am 12:14 AM

Python lebih sesuai untuk sains data dan pembelajaran mesin, manakala JavaScript lebih sesuai untuk pembangunan front-end dan penuh. 1. Python terkenal dengan sintaks ringkas dan ekosistem perpustakaan yang kaya, dan sesuai untuk analisis data dan pembangunan web. 2. JavaScript adalah teras pembangunan front-end. Node.js menyokong pengaturcaraan sisi pelayan dan sesuai untuk pembangunan stack penuh.

Bagaimana saya memasang javascript?Bagaimana saya memasang javascript?Apr 05, 2025 am 12:16 AM

JavaScript tidak memerlukan pemasangan kerana ia sudah dibina dalam pelayar moden. Anda hanya memerlukan editor teks dan penyemak imbas untuk memulakan. 1) Dalam persekitaran penyemak imbas, jalankan dengan memasukkan fail HTML melalui tag. 2) Dalam persekitaran Node.js, selepas memuat turun dan memasang node.js, jalankan fail JavaScript melalui baris arahan.

Bagaimana cara menghantar pemberitahuan sebelum tugas bermula di kuarza?Bagaimana cara menghantar pemberitahuan sebelum tugas bermula di kuarza?Apr 04, 2025 pm 09:24 PM

Cara Menghantar Pemberitahuan Tugas di Quartz terlebih dahulu Apabila menggunakan pemasa kuarza untuk menjadualkan tugas, masa pelaksanaan tugas ditetapkan oleh ekspresi cron. Sekarang ...

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular