2017-11-08 1 views
1

が、私はこの単純な状況を持っていると言うオブジェクトFunction.prototype.bindのが、私の質問は:Function.prototype.bindは

argumentsfに単に最初の引数として適用されようとしているか、それは、f.apply(null, arguments)のように、広がることでしょうか?このオンラインの例を見つけるのが難しいです。

+4

'const fn = f.bind(null、 ...引数); '広げる –

+1

' f.apply.bind(f、null、arguments) 'または' f.bind.apply(f、[null、... arguments]) 'を使用してください。 – Bergi

+0

あなたはnode.jsでは、ES6を使用してください! '関数f(... args){const fn =()=> f(... args); } ' – Bergi

答えて

2

.bind続きを読むない.apply.callに似ています - 2番目の引数は、ちょうど第二引数、つまりとして扱われます。だからあなたの例では:

f(1,2,3)はそうあなたがする必要があるので、Function.prototype.bindFunction.prototype.call

と同様の署名を持っている、fn([1,2,3])

2

argumentsは、単にfの最初の引数として渡されます。さらに、より多くの引数を使用してバインドされた関数を呼び出すと、それらの引数はバインドされた関数の後ろに来ます(つまり、最初の引数を上書きすることはできません)。

here

+1

リンクは大丈夫とは思われません。 –

-1

うんを生成します:

fn.bind(null, ...arguments); 

または

fn.bind(null, ...Array.from(arguments)); 
関連する問題