Function.prototype.apply 和 Function.prototype.call 是允許您使用特定 this 值和參數呼叫函數的方法。兩者之間的主要區別在於 apply 允許您傳入參數數組,而 call 則要求您將參數一一列出。
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 是一個允許您呼叫的方法具有特定 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 | |
---|---|---|---|
定義 | 此方法允許我們使用特定的this 值和參數陣列呼叫函數。 | 此方法允許我們使用特定的 this 值和參數清單呼叫函數。 | |
參數 | 我們傳遞一個參數陣列。 | 我們傳遞一個參數清單。 | |
速度 | 因為它沒有建立新函數,所以它比呼叫更快。 | em> | 因為每次呼叫都會建立一個新函數,所以比apply慢。 |
用法 |
|
|
在本教學中,我們討論了apply和 call之間的差異> 方法。兩者之間的主要區別在於他們如何接受論點。這些方法有不同的用法。您可以查看上表中的使用情況行。
以上是JavaScript 中 Function.prototype.apply 和 Function.prototype.call 的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!