Powiązanie MDN dlaczego łączymy argumenty podczas wywoływania

MDN określa metodę wiązania polyfill dla tych przeglądarek bez rodzimej metody wiązania:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind

Ten kod ma następującą linię:

aArgs.concat(Array.prototype.slice.call(arguments))

Który jest przekazywany jako argument do metody stosowania w funkcji:

fToBind.apply(this instanceof fNOP && oThis
                             ? this
                             : oThis,
                           aArgs.concat(Array.prototype.slice.call(arguments)));

Jednak ta linia faktycznie powtarza argumenty, więc jeśli wywołam metodę wiązania jako:

fnX.bind({value: 666}, 1, 2, 3)

argumenty przekazywane do fnX to:

[1, 2, 3, Object, 1, 2, 3] 

Uruchom następujący przykład i zobacz wyjście konsolihttp://jsfiddle.net/dtbkq/

Argumenty zgłaszane przez fnX to jednak [1, 2, 3], co jest poprawne. Czy ktoś może wyjaśnić, dlaczego argumenty są duplikowane podczas przekazywania wywołania, ale nie pojawiają się w zmiennej argumentów funkcji?

questionAnswers(3)

yourAnswerToTheQuestion