Rumah  >  Artikel  >  hujung hadapan web  >  Pengenalan kepada kaedah panggilan() dalam kemahiran Javascript_javascript

Pengenalan kepada kaedah panggilan() dalam kemahiran Javascript_javascript

WBOY
WBOYasal
2016-05-16 16:09:231190semak imbas

Pengenalan kepada call() di tapak web rasmi Mozilla ialah:

Salin kod Kod adalah seperti berikut:

Kaedah panggilan() memanggil fungsi atau kaedah menggunakan nilai ini yang ditentukan dan beberapa nilai parameter yang ditentukan.

Sintaks Panggilan()
Salin kod Kod adalah seperti berikut:

fun.call(thisArg[, arg1[, arg2[, ...]]])

Parameter Panggilan()

Arg ini

Salin kod Kod adalah seperti berikut:

Nilai ini ditentukan apabila fungsi menyeronokkan sedang berjalan. Perlu diingatkan bahawa nilai ini yang dinyatakan tidak semestinya nilai ini sebenar apabila fungsi dilaksanakan Jika fungsi dalam mod tidak ketat, nilai ini yang dinyatakan sebagai null dan undefined akan secara automatik menunjuk ke objek global (dalam. penyemak imbas, ia adalah objek tetingkap), dan ini yang nilainya ialah nilai primitif (nombor, rentetan, nilai Boolean) akan menunjuk ke objek pembalut automatik bagi nilai primitif.

arg1, arg2, ...
Salin kod Kod adalah seperti berikut:

Senarai parameter yang ditentukan.

Kaedah panggilan() dalam Javascript

Jangan beri perhatian kepada penjelasan rumit di atas dan mulakan proses langkah demi langkah.

Kaedah Contoh Panggilan()

Jadi saya menulis Hello, World yang lain:

Salin kod Kod adalah seperti berikut:

cetakan fungsi(p1, p2) {
console.log( p1 ' ' p2);
}
print("Hello", "Dunia");
print.call(undefined, "Hello", "World");

Kedua-dua kaedah mempunyai output yang sama Walau bagaimanapun, sebaliknya, kaedah panggilan juga lulus dalam tidak ditentukan.

Seterusnya, mari lihat contoh lain.

Salin kod Kod adalah seperti berikut:

var obj=function(){};
cetakan fungsi(p1, p2) {
console.log( p1 ' ' p2);
}

print.call(obj, "Hello", "World");

Hanya di sini, perkara yang kami hantar masih tidak ditentukan, kerana yang tidak ditentukan dalam contoh sebelumnya adalah kerana parameter perlu dihantar masuk. Ini tidak benar-benar menggambarkan penggunaan panggilan. Mari kita lihat contoh yang lebih baik.

Salin kod Kod adalah seperti berikut:

cetakan fungsi(nama) {
console.log( this.p1 ' ' this.p2);
}

var h={p1:"hello", p2:"world", print:print};
h.print("fd");

var h2={p1:"hello", p2:"world"};
print.call(h2, "nothing");

Panggilan bermaksud meminjam kaedah dan objek orang lain untuk dihubungi, sama seperti memanggil anda sendiri. Dalam h.print, apabila fungsi dipanggil sebagai kaedah, ini akan menunjuk ke objek yang berkaitan. Cuma dalam contoh ini kita tidak faham sama ada h2 dipanggil print atau print dipanggil h2. Jadi saya memetik contoh Mozilla

Salin kod Kod adalah seperti berikut:

fungsi Produk(nama, harga) {
This.name = nama;
This.price = harga;

jika (harga < 0)
          throw RangeError('Tidak boleh membuat produk "' name '" dengan harga negatif');
Kembalikan ini;
}

fungsi Makanan(nama, harga) {
Product.call(ini, nama, harga);
This.category = 'makanan';
}
Food.prototype = Produk baharu();

var keju = Makanan baharu('feta', 5);
console.log(keju);


Di sini kita benar-benar dapat melihat objek mana yang dipanggil kaedah mana. Dalam contoh, kejadian objek yang dibuat menggunakan pembina Makanan akan mempunyai nama dan atribut harga yang ditambahkan dalam pembina Produk, tetapi atribut kategori ditakrifkan dalam pembina masing-masing.

Salin kod Kod adalah seperti berikut:

cetakan fungsi(nama) {
console.log( this.p1 ' ' this.p2);
}

var h2= fungsi(tidak){
This.p1 = "hello";
This.p2 = "dunia";
Print.call(ini, "tiada apa-apa");
};
h2();

h2 di sini bertindak sebagai penerima untuk memanggil cetakan fungsi. Seperti dalam contoh Makanan, dalam pembina anak, anda boleh melaksanakan warisan dengan memanggil kaedah panggilan pembina induk.

Bagi kelebihan kaedah Panggilan, ia diperkenalkan dalam "JavaScript Berkesan".

1 Gunakan kaedah panggilan untuk menyesuaikan penerima untuk memanggil fungsi.
2. Gunakan kaedah panggilan untuk memanggil kaedah yang tidak wujud dalam objek yang diberikan.
3. Gunakan kaedah panggilan untuk mentakrifkan fungsi tertib lebih tinggi yang membolehkan pengguna menentukan penerima untuk fungsi panggil balik.

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