Doble colon de JavaScript (operador de enlace)

129

Como sabes, hay una propuesta de acceso directo para la .bind()función, por lo que puedes escribir:

::this.handleStuff

y funcionará así en es5:

this.handleStuff.bind(this)

Mi pregunta es: ¿será posible pasar argumentos de esta manera?

Me refiero a una forma de escribir esto con el acceso directo mencionado anteriormente:

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

Es un patrón bastante común en React, por lo que sería bueno acortarlo un poco.

Victor Marchuk
fuente
1
¿Estás hablando de una aplicación parcial?
Ben Aston
Parece una buena idea para otra propuesta de especificaciones.
Greg Herbowicz

Respuestas:

154

No. El operador de enlace ( propuesta de especificaciones ) viene en dos sabores:

  • Método de extracción

    ::obj.method      obj.method.bind(obj)
  • llamadas de "método virtual"

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

Ninguno de ellos presenta una aplicación parcial . Para lo que desea, debe usar una función de flecha:

(...args) => this.handleStuff('stuff', ...args)  this.handleStuff.bind(this, 'stuff')
Bergi
fuente
44
(Hubo cierta discusión sobre el soporte de la aplicación parcial)
Bergi