JavaScript 双冒号(绑定运算符)

IT技术 javascript ecmascript-harmony ecmascript-next
2021-01-13 09:36:40

如您所知,有一个.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')
(有一些关于支持部分应用的讨论
2021-03-26 09:36:40