MDNは、ネイティブバインドメソッドを使用しないブラウザのポリフィルバインドメソッドを指定します:https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind
このコードには次の行があります。
aArgs.concat(Array.prototype.slice.call(arguments))
これは、関数のapplyメソッドに引数として渡されます。
fToBind.apply(this instanceof fNOP && oThis
? this
: oThis,
aArgs.concat(Array.prototype.slice.call(arguments)));
ただし、この行は実際には引数を繰り返しているため、bindメソッドを次のように呼び出した場合:
fnX.bind({value: 666}, 1, 2, 3)
fnXに渡される引数は次のとおりです。
[1, 2, 3, Object, 1, 2, 3]
次の例を実行して、コンソール出力http://jsfiddle.net/dtbkq/を確認します。
ただし、fnXによって報告される引数は[1、2、3]であり、これは正しいです。誰かが、apply呼び出しに渡されたときに引数が重複しているのに、関数の引数変数に表示されない理由を説明できますか?