Rumah > Artikel > hujung hadapan web > Perbezaan antara Function.prototype.apply dan Function.prototype.call dalam JavaScript
Function.prototype.apply dan Function.prototype.call ialah kaedah yang membolehkan anda memanggil fungsi dengan nilai dan parameter tertentu ini. Perbezaan utama antara kedua-duanya ialah yang terpakai membolehkan anda menghantar dalam tatasusunan parameter, manakala panggilan memerlukan anda menyenaraikan parameter satu demi satu.
Function .prototype.apply ialah kaedah yang membolehkan anda memanggil fungsi dengan tatasusunan nilai dan hujah tertentu ini.
Sintaks untuk menggunakan apply ialah -
func.apply(thisArg, argsArray)
Di sini thisArg ialah nilai yang akan digunakan seperti ini di dalam fungsi. argsArray ialah susunan hujah yang akan dihantar ke fungsi.
Berikut ialah contoh memanggil fungsi menggunakan apply -
<!doctype html> <html> <head> <title>Examples</title> </head> <body> <div id="result"></div> <script> function sayHello(name) { return "Hello, " + name + "!"; } document.getElementById("result").innerHTML = sayHello.apply(null, ["John"]) </script> </body> </html>
Kod di atas akan mencetak output di bawah.
Hello, John!
Seperti yang anda boleh lihat, kami melepasi null untuk Arg ini kerana kami tidak mahu menetapkan nilai ini. Kami lulus tatasusunan untuk argsArray yang mengandungi parameter "John". Hasilnya ialah panggilan ke fungsi sayHello dengan "John" sebagai hujah nama.
Function.prototype.call ialah fungsi yang membolehkan anda memanggil kaedah dengan senarai nilai dan parameter tertentu ini.
Sintaks untuk menggunakan panggilan ialah
func.call(thisArg, arg1, arg2, ...)
di mana Arg ini ialah nilai yang akan digunakan seperti ini di dalam fungsi. arg1, arg2, ... adalah hujah yang akan dihantar ke fungsi.
Berikut adalah contoh menggunakan panggilan Fungsi panggilan -
<!doctype html> <html> <head> <title>Examples</title> </head> <body> <div id="result"></div> <script> function sayHello(name) { return "Hello, " + name + "!"; } document.getElementById("result").innerHTML = sayHello.call(null, ["John"]) </script> </body> </html>
Kod di atas akan mencetak output di bawah.
Hello, John!
Seperti yang anda boleh lihat, kami melepasi null untuk Arg ini kerana kami tidak mahu menetapkan nilai ini. Kami mengambil "John" sebagai satu-satunya parameter. Hasilnya ialah panggilan ke fungsi sayHello dengan "John" sebagai parameter nama.
Jadual di bawah menyerlahkan perbezaan utama antara Function.prototype.apply dan Function.prototype.call -
Asas Fungsi Perbandingan | applyFunction.prototype.call | ||
---|---|---|---|
Kaedah ini membolehkan kita memanggil fungsi dengan nilai | ini tertentu dan pelbagai parameter. | Kaedah ini membolehkan kita memanggil fungsi dengan nilaiini dan senarai hujah tertentu. | |
Kami lulus pelbagai parameter. | Kami lulus senarai parameter. | ||
Oleh kerana ia tidak mencipta fungsi baharu, ia lebih pantas daripada | memanggil. | em>Kerana setiap panggilan mencipta fungsi baharu, ia lebih perlahan daripada | memohon. Penggunaan objek. Panggil fungsi tanpa nama. |
Panggil fungsi dan nyatakan konteks "ini" |
|
Dalam tutorial ini, kami membincangkan perbezaan antara kaedah
|
Atas ialah kandungan terperinci Perbezaan antara Function.prototype.apply dan Function.prototype.call dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!