JavaScript双冒号(绑定运算符)

如你所知,有一个提议.bind()函数的快捷方式,所以你可以写:

 ::this.handleStuff 

它将在es5中像这样工作:

 this.handleStuff.bind(this) 

我的问题是:是否有可能通过这样的论据?

我的意思是用上面提到的捷径写这个的方法:

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

这在React中是一个很常见的模式,所以稍微缩短它会很好。

否。 绑定操作符 ( 规范提案 )有两种风格:

  • 方法提取

     ::obj.method ≡ obj.method.bind(obj) 
  • “虚拟方法”呼叫

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

它们都不能部分应用 。 对于你想要的,你应该使用箭头function:

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