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.


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')

44
(Hubo cierta discusión sobre el soporte de la aplicación parcial)
Bergi
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.