Rumah  >  Artikel  >  hujung hadapan web  >  Perbezaan dalam penggunaan memohon, memanggil dan mengikat dalam pengetahuan javascript_Basic

Perbezaan dalam penggunaan memohon, memanggil dan mengikat dalam pengetahuan javascript_Basic

WBOY
WBOYasal
2016-05-16 15:06:351556semak imbas

Dalam JS, ketiga-tiga ini digunakan untuk menukar titik objek fungsi ini.

Sebelum bercakap tentang perbezaan, mari kita ringkaskan persamaan antara ketiga-tiga:

1. Kesemuanya digunakan untuk menukar titik objek fungsi ini.

2. Parameter pertama ialah objek yang dituju.

3. Anda boleh menggunakan parameter seterusnya untuk menghantar parameter.

Jadi apakah perbezaan antara mereka? Mari kita lihat contoh dahulu.

        var xw = {
            name : "小王",
            gender : "男",
            age : 24,
            say : function() {
                alert(this.name + " , " + this.gender + " ,今年" + this.age);                
            }
        }
        var xh = {
            name : "小红",
            gender : "女",
            age : 18
        }
        xw.say();

Tidak banyak yang boleh dikatakan dalam dirinya sendiri yang ditunjukkan mestilah Xiao Wang, lelaki, 24 tahun ini.
Jadi bagaimana untuk menggunakan kaedah katakan xw untuk memaparkan data xh.
Untuk panggilan, anda boleh melakukan ini:

1.xw.say.call(xh);

Untuk memohon anda boleh melakukan ini:

1.xw.say.apply(xh);

Dan untuk mengikat ia perlu seperti ini:

1.xw.say.bind(xh)();

Jika anda menulis xw.say.bind(xh) secara langsung, anda tidak akan melihat perbezaannya? Kedua-dua panggilan dan gunakan adalah panggilan terus ke fungsi, dan kaedah bind masih mengembalikan fungsi, jadi anda perlu () memanggilnya kemudian.
Jadi apakah perbezaan antara panggilan dan memohon? Mari kita tulis semula contoh itu sedikit.

        var xw = {
            name : "小王",
            gender : "男",
            age : 24,
            say : function(school,grade) {
                alert(this.name + " , " + this.gender + " ,今年" + this.age + " ,在" + school + "上" + grade);                
            }
        }
        var xh = {
            name : "小红",
            gender : "女",
            age : 18
        }

Anda boleh melihat bahawa kaedah sebut mempunyai dua lagi parameter Kami menghantar parameter melalui parameter panggilan/guna.
Ini adalah kes untuk panggilan

1.xw.say.call(xh,"Sekolah Rendah Eksperimen","Darjah Enam"); 

Dan untuk memohon adalah seperti ini

1.xw.say.apply(xh,["Sekolah Rendah Eksperimen","Gred Enam"]);

Adakah anda melihat perbezaannya? Parameter selepas panggilan sepadan dengan kaedah say, manakala parameter kedua untuk apply ialah array Elemen dalam tatasusunan sepadan dengan kaedah say. Ini adalah Perbezaan terbesar antara keduanya.

Jadi, bagaimanakah cara mengikat parameter lulus? Ia boleh lulus parameter seperti panggilan.

1.xw.say.bind(xh,"Sekolah Rendah Eksperimen","Gred Enam")();

Tetapi memandangkan bind masih mengembalikan fungsi, kami juga boleh menghantar parameter semasa memanggil.

1.xw.say.bind(xh)("Sekolah Rendah Eksperimen","Gred Enam");

Perbezaan dalam penggunaan apply, call dan bind dalam javascript di atas adalah semua kandungan yang dikongsi oleh editor saya harap ia dapat memberi rujukan kepada anda, dan saya harap anda akan menyokong Script Home.

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