Function.prototype.call 呼叫函式

Function.prototype.call:

Function.prototype.call是函式物件的方法,用來呼叫函式,與一般呼叫函式的方式不同的地方是,call方法可以指定函式中的this值。call方法與另一個函式物件方法apply十分類似,唯一的不同點是,call方法傳遞參數的方式是個別傳送,而apply方法則是將所有參數放在一個陣列中來傳送。

Function.prototype.call的語法:

functionobj.call(thisArg[, arg1[, arg2[, ...]]])

thisArg:用來指定函式內的this值。若被呼叫的函式是在非嚴格模式下執行,thisArg會被轉化為物件,因此若是輸入null或是undefined那函示的this會等於全域物件,若是其他原始值(primitive value),則會被包裹成為物件。在ECMAScript第五版中的嚴格模式下,thisArg會毫無改變的變成函式內的this。

arg1,arg2...:函式參數,會當成被呼叫的函式的參數,傳遞給函式。

Function.prototype.call的範例:

<script type="text/javascript">
function getmax(arr1,arr2){
"use strict";
document.writeln(this+"<br/>");
var y=Math.max.call(this,arr1,arr2);
document.writeln(y+"<br/>");
}
getmax.call(null,5,6);
</script>

Function.prototype.call的範例輸出:

null
6

Function.prototype.call的範例說明:

1.getmax()函式內使用了嚴格模式,因此this並沒有被轉化成為全域物件(意旨在全域範圍中的this),而是原本的null值。可以嘗試把"use strict";拿掉,會有不同的結果。在瀏覽器中,null會變成[object Window]。

2.使用call呼叫getmax,第二個參數5與第三個參數6會被當作getmax的第一個參數與第二個參數。

其他:

如果你想更了解其他函式觀念,可以參考看看下面這篇文章:函式 Function

我把許多函式的觀念與用法都收集在這篇文章內。

 
 

  按個讚!~支持本站!~

FB推薦載入中