JavaScript双冒号(绑定运算符)

时间:2015-07-04 11:27:53

标签: javascript ecmascript-harmony ecmascript-next

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

::this.handleStuff

它将在es5中起作用:

this.handleStuff.bind(this)

我的问题是:这样可以传递参数吗?

我的意思是用上述快捷方式写这个:

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

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

1 个答案:

答案 0 :(得分:145)

没有。 bind operatorspec proposal)有两种形式:

  • 方法提取

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

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

它们都没有partial application。对于你想要的,你应该使用箭头功能:

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