首頁 >web前端 >js教程 >JavaScript 中 Function.prototype.apply 和 Function.prototype.call 的差別

JavaScript 中 Function.prototype.apply 和 Function.prototype.call 的差別

WBOY
WBOY轉載
2023-08-24 13:05:021501瀏覽

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

Function.prototype.applyFunction.prototype.call 是允許您使用特定 this 值和參數呼叫函數的方法。兩者之間的主要區別在於 apply 允許您傳入參數數組,而 call 則要求您將參數一一列出。

Function.prototype.apply

​​>

Function .prototype.apply 是一種方法,可讓您使用特定的 this 值和參數陣列呼叫函數。

語法

使用 apply 的語法是 -

func.apply(thisArg, argsArray)

這裡 thisArg 是將在函數內用作 this 的值。 argsArray 是將傳遞給函數的參數陣列。

範例

以下是使用 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>

輸出

上面的程式碼將列印下面的輸出。

Hello, John!

如您所見,我們為 thisArg 傳遞了 null,因為我們不想設定 this 值。我們為 argsArray 傳遞了一個數組,其中包含參數「John」。結果是以“John”作為名稱參數呼叫 sayHello 函數。

Function.prototype.call

Function.prototype.call 是一個允許您呼叫的方法具有特定 this 值和參數清單的函數。

語法

使用 call 的語法是

func.call(thisArg, arg1, arg2, ...)

這裡 thisArg 是將在函數內用作 this 的值。 arg1、arg2、 ...是將傳遞給函數的參數。

範例

這裡是使用呼叫的範例 呼叫函數-

<!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>

輸出

上面的程式碼將列印下面的輸出。

Hello, John!

如您所見,我們為 thisArg 傳遞了 null,因為我們不想設定 this 值。我們將“John”作為唯一的參數。結果是以“John”作為名稱參數呼叫 sayHello 函數。

Function.prototype.apply 和Function.prototype.call 之間的差異

下表重點介紹了Function.prototype.apply 和Function.prototype.call 之間的主要差異-

比較基礎 Function.prototype.apply Function.prototype.call
定義 此方法允許我們使用特定的this 值和參數陣列呼叫函數。

此方法允許我們使用特定的 this 值和參數清單呼叫函數。

參數 我們傳遞一個參數陣列。

我們傳遞一個參數清單。

速度 因為它沒有建立新函數,所以它比呼叫更快。 em>

因為每次呼叫都會建立一個新函數,所以比apply慢。

用法
  • #將陣列附加到

  • 編寫內建函數而不循環

  • #連結物件的建構子。

  • 呼叫匿名函數。

  • 呼叫函數並指定「this」的上下文

  • #呼叫函數而不指定第一個參數。

#結論

在本教學中,我們討論了apply call之間的差異> 方法。兩者之間的主要區別在於他們如何接受論點。這些方法有不同的用法。您可以查看上表中的使用情況行。

以上是JavaScript 中 Function.prototype.apply 和 Function.prototype.call 的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除