如您所知,有.bind()
函数快捷方式的建议,因此您可以写:
::this.handleStuff
它将在es5中起作用:
this.handleStuff.bind(this)
我的问题是:这样可以传递参数吗?
我的意思是用上述快捷方式写这个:
this.handleStuff.bind(this, 'stuff')
它在React中是一个非常常见的模式,所以稍微缩短它会很好。
答案 0 :(得分:145)
没有。 bind operator(spec 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')