1. 程式人生 > >js中apply和Math.max()函式的問題

js中apply和Math.max()函式的問題

Function.apply()是JS的一個OOP特性,一般用來模擬繼承和擴充套件this的用途,對於上面這段程式碼,可以這樣去理解:

XXX.apply是一個呼叫函式的方法,其引數為:apply(Function, Args),
Function為要呼叫的方法,Args是引數列表,當Functionnull時,預設為上文,
即
Math.max.apply(null, arr)

可認為是
apply(Math.max, arr)
然後,arr是一個引數列表,對於max方法,其引數是若干個數,即
Math.max(a, b, c, d, ...)
當使用apply時,把所有引數加入到一個數組中,即
arr =  [a, b, c, d, ...]
代入到原式,
Math
.max.apply(null, [a, b, c, d, ...]) 實際上等同於 Math.max(a, b, c, d, ...) 在此處,使用apply的優點是在部分JS引擎中提升效能。
答案2