Function.prototype.call 呼叫函式
- 詳細內容
- 分類:Javascript
- 發佈:-0001-11-30, 週三 08:06
- 點擊數:2244
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推薦載入中