2015-07-04 15 views
110

Come sapete, c'è una proposta per una scorciatoia per .bind() funzione, in modo da poter scrivere:JavaScript doppio colon (operatore bind)

::this.handleStuff 

e funzionerà come quella in ES5:

this.handleStuff.bind(this) 

La mia domanda è: sarà possibile passare argomenti in questo modo?

intendo un modo di scrivere questo con il collegamento di cui sopra:

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

E 'un modello abbastanza comune in Reagire, quindi sarebbe bello accorciare un po'.

+1

Stai parlando dell'applicazione parziale? – Ben

+0

Sembra una buona idea per un'altra proposta specifica. –

risposta

130

No. L'bind operator (spec proposal) disponibile in due versioni:

  • estrazione Metodo

    ::obj.method  ≡ obj.method.bind(obj) 
    
  • "metodo virtuale" chiamate

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

Nessuno dei due è dotato di partial application. Per quello che vuoi, dovresti usare una funzione di freccia:

(...args) => this.handleStuff('stuff', ...args) ≡ this.handleStuff.bind(this, 'stuff') 
+4

(C'era [qualche discussione] (https://github.com/tc39/proposal-bind-operator/issues/37) sul supporto dell'applicazione parziale) – Bergi