Ich werde durch JavaScript ninja Tutorial John Resig und auf #51 Ich sehe dies:Warum sollten Sie Math als erstes Argument an Math.max.apply übergeben?
// Find the largest number in that array of arguments
var largestAllButFirst = Math.max.apply(Math, allButFirst);
allButFirst
nur ein kleines Array von ganzen Zahlen ist. Ich glaube, ich verstehe, was apply
tut, aber ich kann nicht verstehen, warum Math
als Argument an apply
übergeben wird.
@JakeSellers Für 'Math.max' speziell, und ich bin sicher, ein paar andere Funktionen, ist es wirklich egal. Der Punkt ist, dass 'Math.max' ** sich nicht auf den 'this'-Wert ** verlässt oder diesen benutzt ... ... aber viele andere Funktionen ** do **. Obwohl es technisch optional ist, würde ich vorschlagen, es immer zu übergeben, weil Sie es normalerweise wie 'Math.max()' nennen (der 'this'-Wert ist 'Math'). Ich wäre lieber sicher als Entschuldigung für so eine kleine Sache, sowie konsequent. – Ian
@ian ok, danke –
@ian in [die Dokumente] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments) für Argumente, können Sie sehen, sie verwenden ' Array.prototype.slice.call (arugments) 'um die Argumente in ein Array zu ändern, ohne dass ein Kontext zum Aufruf gegeben wird. Was ist deine Meinung dazu? Ich benutze diese Technik manchmal, sollte ich mich nicht darum kümmern oder einen Kontext weitergeben, vielleicht nur "das" für den lokalen Funktionskontext? –