JavaScript 双冒号(绑定运算符)

如您所知,有一个关于函数快捷方式的建议,因此您可以编写:.bind()

::this.handleStuff

它将在es5中像这样工作:

this.handleStuff.bind(this)

我的问题是:有可能以这种方式传递参数吗?

我的意思是用前面提到的快捷方式写这个的一种方式:

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

这是 React 中一个非常常见的模式,所以缩短一点会很好。


答案 1

不。绑定运算符规范建议)有两种类型:

  • 提取方法

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

答案 2