Pengantar Call () di situs web resmi Mozilla adalah:
Salinan kode adalah sebagai berikut:
Metode Call () memanggil fungsi atau metode dengan nilai yang ditentukan ini dan beberapa nilai parameter yang ditentukan.
Sintaks panggilan ()
Salinan kode adalah sebagai berikut:
fun.call (thisarg [, arg1 [, arg2 [, ...]]))
Parameter panggilan ()
Thisarg
Salinan kode adalah sebagai berikut:
Nilai ini ditentukan saat fungsi menyenangkan sedang berjalan. Perlu dicatat bahwa nilai yang ditentukan ini tidak selalu berarti nilai nyata ini ketika fungsi dieksekusi. Jika fungsi ini dalam mode non-ketat, nilai ini ditentukan sebagai nol dan tidak terdefinisi akan secara otomatis menunjuk ke objek global (objek jendela di browser), dan nilai ini dengan nilai asli (angka, string, nilai boolean) akan menunjuk ke objek pembungkus otomatis dari nilai asli.
arg1, arg2, ...
Salinan kode adalah sebagai berikut:
Daftar parameter yang ditentukan.
Call () Metode dalam JavaScript
Jangan perhatikan penjelasan rumit di atas, mulailah proses ini langkah demi langkah.
Contoh metode panggilan ()
Jadi saya menulis halo lainnya, dunia:
Salinan kode adalah sebagai berikut:
function print (p1, p2) {
console.log (p1 + '' + p2);
}
cetak ("halo", "dunia");
print.call (tidak terdefinisi, "halo", "dunia");
Namun, kedua metode tersebut memiliki output yang sama, sebaliknya, metode panggilan juga melewati yang tidak terdefinisi.
Selanjutnya, mari kita lihat contoh lain.
Salinan kode adalah sebagai berikut:
var obj = function () {};
function print (p1, p2) {
console.log (p1 + '' + p2);
}
print.call (obj, "halo", "dunia");
Tapi di sini, apa yang kami lewati masih tidak terdefinisi, karena yang tidak terdefinisi dalam contoh sebelumnya adalah karena parameter perlu dilewati. Tidak ada refleksi nyata dari penggunaan panggilan di sini, lihat contoh yang lebih baik.
Salinan kode adalah sebagai berikut:
function print (name) {
console.log (this.p1 + '' + this.p2);
}
var h = {p1: "halo", p2: "dunia", cetak: cetak};
h.print ("fd");
var h2 = {p1: "hello", p2: "world"};
print.call (H2, "tidak ada");
Panggilan dipanggil dengan meminjam metode dan objek orang lain, seperti memanggil Anda sendiri. Di H.Print, ketika suatu fungsi disebut sebagai metode, ini akan menunjuk ke objek terkait. Tetapi dalam contoh ini, kami tidak mengerti apakah H2 disebut cetak atau cetak yang disebut H2. Jadi saya mengutip contoh mozilla
Salinan kode adalah sebagai berikut:
Fungsi Produk (Nama, Harga) {
this.name = name;
this.price = harga;
if (harga <0)
Throw RangeError ('tidak dapat membuat produk "' + name + '" dengan harga negatif');
kembalikan ini;
}
function food (name, price) {
Product.call (ini, nama, harga);
this.category = 'food';
}
Food.prototype = produk baru ();
var keju = makanan baru ('feta', 5);
Console.log (keju);
Di sini kita benar -benar dapat memahami objek mana yang memanggil metode mana. Dalam contoh, instance objek yang dibuat menggunakan konstruktor makanan akan memiliki nama dan atribut harga yang ditambahkan dalam konstruktor produk, tetapi atribut kategori didefinisikan dalam konstruktor masing -masing.
Salinan kode adalah sebagai berikut:
function print (name) {
console.log (this.p1 + '' + this.p2);
}
var h2 = fungsi (tidak) {
this.p1 = "halo";
this.p2 = "dunia";
print.call (ini, "tidak ada");
};
h2 ();
Di sini H2 digunakan sebagai penerima untuk memanggil cetak fungsi. Seperti dalam contoh makanan, dalam konstruktor anak, Anda dapat menerapkan warisan dengan memanggil metode panggilan dari konstruktor induk.
Adapun keuntungan dari metode panggilan, diperkenalkan dalam "JavaScript yang efektif".
1. Gunakan metode panggilan untuk menyesuaikan penerima untuk memanggil fungsi.
2. Gunakan metode panggilan untuk memanggil metode yang tidak ada di objek yang diberikan.
3. Gunakan metode panggilan untuk menentukan fungsi tingkat tinggi yang memungkinkan pengguna untuk menentukan penerima untuk fungsi panggilan balik.