web-dev-qa-db-ja.com

JavaScriptの二重コロン(バインド演算子)

ご存知のように、.bind()関数のショートカットの提案があるので、次のように書くことができます。

::this.handleStuff

es5でも同様に機能します。

this.handleStuff.bind(this)

私の質問は、この方法で引数を渡すことは可能でしょうか?

前述のショートカットでこれを書く方法を意味します:

this.handleStuff.bind(this, 'stuff')

これはReactではかなり一般的なパターンなので、少し短くするといいでしょう。

125
Victor Marchuk

いいえ。 bind operatorspec提案 )には2つのフレーバーがあります:

  • メソッド抽出

    ::obj.method     ≡ obj.method.bind(obj)
    
  • 「仮想メソッド」呼び出し

    obj::function    ≡ function.bind(obj)
    obj::function(…) ≡ function.call(obj, …)
    

どちらも機能しない 部分的なアプリケーション 。あなたが望むもののために、矢印関数を使用する必要があります:

(...args) => this.handleStuff('stuff', ...args) ≡ this.handleStuff.bind(this, 'stuff')
148
Bergi