JavaScript double colon (bind operator)

35,833

No. The bind operator (spec proposal) comes in two flavours:

  • Method extraction

    ::obj.method     ≡ obj.method.bind(obj)
    
  • "virtual method" calls

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

Neither of them feature partial application. For what you want, you should use an arrow function:

(...args) => this.handleStuff('stuff', ...args) ≡ this.handleStuff.bind(this, 'stuff')
Share:
35,833
Victor Marchuk
Author by

Victor Marchuk

Updated on August 20, 2020

Comments

  • Victor Marchuk
    Victor Marchuk about 3 years

    As you know, there is a proposal for a shortcut for .bind() function, so you can write:

    ::this.handleStuff
    

    and it will work like that in es5:

    this.handleStuff.bind(this)
    

    My question is: will it be possible to pass arguments this way?

    I mean a way of writing this with the aforementioned shortcut:

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

    It's a pretty common pattern in React, so it would be nice to shorten it a little.

  • Bergi
    Bergi about 7 years
    (There was some discussion about supporting partial application)