Function.prototype.apply 呼叫函式
- 詳細內容
- 分類:Javascript
- 發佈:2013-06-19, 週三 22:24
- 點擊數:1941
Function.prototype.apply:
apply是函式物件的方法,可以用來呼叫函式,並且指定函式內 this 的值。apply方法會將原函式的參數以陣列方式表示,在ECMAScript 5中,也可以是個類似陣列的物件,譬如說Arguments物件。apply方法與call方法十分類似,差別在於call方法傳遞參數的方式是個別傳送,而apply方法則是將所有參數放在一個陣列中來傳送。
Function.prototype.apply的語法:
functionobj.apply(thisArg[, argsArray])
thisArg:用來指定函式內的this值。若被呼叫的函式是在非嚴格模式下執行,thisArg會被轉化為物件,因此若是輸入null或是undefined那函示的this會等於全域物件,若是其他原始值(primitive value),則會被包裹成為物件。在ECMAScript第五版中的嚴格模式下,thisArg會毫無改變的變成函式內的this。
argsArray:參數陣列。傳遞給函式的參數,以陣列或是類陣列物件(只在ECMAScript 5)方式表示,陣列中的第一個元素被視為函式的第一個參數,第二個元素被視為函式的第二個參數。
Function.prototype.apply的範例:
Function.prototype.apply的範例輸出:
null
15
Function.prototype.apply的範例說明:
1.getmax()函式內使用了嚴格模式,因此this並沒有被轉化成為全域物件(意旨在全域範圍中的this),而是原本的null值。可以嘗試把"use strict";拿掉,會有不同的結果。在瀏覽器中,null會變成[object Window]。
2.apply的第二個參數 [[4,5,6,7,8,9],[11,15,12]]是由兩個陣列組成的陣列,第一個陣列被視為getmax()的第一個參數,第二個陣列被視為getmax()的第二個參數。
3.將兩個陣列合併,並當成Math.max.apply()的第二個參數參數。
4.Math.max.apply(this,[4,5,6,7,8,9,11,15,12]) 相等於 Math.max(4,5,6,7,8,9,11,15,12)。
Function.prototype.apply的注意事項:
有時候Javascript的執行環境會對函式的輸入參數個數有所限制,因此應該注意一下。這通常不會有問題,不過如果陣列長度數以萬計,那你真的靠考慮這個潛藏的風險。
其他:
如果你想更了解其他函式觀念,可以參考看看下面這篇文章:函式 Function。
我把許多函式的觀念與用法都收集在這篇文章內。
按個讚!~支持本站!~
你可能會有興趣的文章