Rumah >hujung hadapan web >tutorial js >Perbezaan antara Function.prototype.apply dan Function.prototype.call dalam JavaScript

Perbezaan antara Function.prototype.apply dan Function.prototype.call dalam JavaScript

WBOY
WBOYke hadapan
2023-08-24 13:05:021503semak imbas

JavaScript 中 Function.prototype.apply 和 Function.prototype.call 的区别

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

​​>

Function .prototype.apply ialah kaedah yang membolehkan anda memanggil fungsi dengan tatasusunan nilai dan hujah tertentu ini.

Syntax

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.

Contoh

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>

Output

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

Function.prototype.call ialah fungsi yang membolehkan anda memanggil kaedah dengan senarai nilai dan parameter tertentu ini.

Syntax

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.

Contoh

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>

Output

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.

Perbezaan antara Function.prototype.apply dan Function.prototype.call

Jadual di bawah menyerlahkan perbezaan utama antara Function.prototype.apply dan Function.prototype.call -

applyFunction.prototype.callDefinisi Kaedah ini membolehkan kita memanggil fungsi dengan nilai ParameterKami lulus pelbagai parameter. Kami lulus senarai parameter. Kelajuan Oleh kerana ia tidak mencipta fungsi baharu, ia lebih pantas daripada em> Kerana setiap panggilan mencipta fungsi baharu, ia lebih perlahan daripada
Asas Fungsi Perbandingan
Kaedah ini membolehkan kita memanggil fungsi dengan nilai ini tertentu dan pelbagai parameter.

ini dan senarai hujah tertentu.

memanggil.

memohon. Penggunaan objek.

Panggil fungsi tanpa nama.

Panggil fungsi dan nyatakan konteks "ini"
  • Panggil fungsi tanpa menyatakan hujah pertama.

Kesimpulan
Dalam tutorial ini, kami membincangkan perbezaan antara kaedah
    apply
  • ​​dan

    panggilan

    >. Perbezaan utama antara keduanya ialah bagaimana mereka menerima hujah. Kaedah ini mempunyai kegunaan yang berbeza. Anda boleh melihat baris penggunaan dalam jadual di atas.

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam