有morethanone stackoverflow有關如何在javascript中查找值的數組的最小值或最大值的問題。這不是那個問題。.apply(Math,arrayName)是如何工作的? (javascript)
我想知道爲什麼通過.apply()
奇怪的事情,因爲this
論點仍然有效。儘管Aaron Crane的a good blog post關於Math對象的API如何變成現實,但仍有一些問題未得到解答。
以下每個代碼片段都適用。我的問題是,如何?到this
的任務究竟發生了什麼,這使得每一個工作?
標準建設
var values = [45, 46, 47]
var min = Math.min.apply(Math, values);
alert(min); //45
一個怪異建築,但範圍可能會非常棘手......
var values = [45, 46, 47]
var min = Math.min.apply(this, values);
alert(min); //45
稍微怪異
var values = [45, 46, 47]
var min = Math.min.apply(global, values);
alert(min); //45
怪異儘管如此,但也許好了B/c瀏覽器
var values = [45, 46, 47]
var min = Math.min.apply(window, values);
alert(min); //45
很怪
var values = [45, 46, 47]
var min = Math.min.apply(null, values);
alert(min); //45
真正奇怪的
var values = [45, 46, 47]
var min = Math.min.apply(undefined, values);
alert(min); //45
'Math.min'不以任何方式使用'this',所以它通過它無關緊要,它不關心。 –
作爲'thisArg'傳遞的值只對'function'有影響,如果它依賴於'this'具有特定的值。而且,'Math.min()'[根本不需要引用'this'](http://ecma-international.org/ecma-262/5.1/#sec-15.8.2.12)。 –
「apply」的第一個參數是在函數中應該用作this的值。因爲'Math.min'不會爲任何事情使用'this',所以你通過參數傳遞給'this'在邏輯上無關緊要......你可能會通過''foobar「'或'9/11 '作爲'apply'的第一個參數。 – CBroe