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


129

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

::this.handleStuff

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

this.handleStuff.bind(this)

私の質問は、このように引数を渡すことは可能ですか?

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

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

Reactではかなり一般的なパターンなので、少し短くしておくとよいでしょう。


1
部分適用について話しているのですか?
Ben Aston

さらに別の仕様提案のための良いアイデアのように見えます。
Greg Herbowicz

回答:


154

いいえ。バインド演算子仕様提案)には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')

4
(部分的なアプリケーションのサポートについていくつかの議論がありました)
Bergi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.