JavaScript 双冒号(绑定运算符)
JavaScript double colon (bind operator)
如您所知,有人提议为 .bind()
函数创建一个快捷方式,因此您可以这样写:
::this.handleStuff
它会像在 es5 中那样工作:
this.handleStuff.bind(this)
我的问题是:是否可以通过这种方式传递参数?
我的意思是用前面提到的快捷方式写这个:
this.handleStuff.bind(this, 'stuff')
这是 React 中很常见的模式,所以将其缩短一点会很好。
没有。 bind operator (spec proposal) 有两种形式:
方法提取
::obj.method ≡ obj.method.bind(obj)
"virtual method" 调用
obj::function ≡ function.bind(obj)
obj::function(…) ≡ function.call(obj, …)
它们都没有partial application。对于你想要的,你应该使用箭头函数:
(...args) => this.handleStuff('stuff', ...args) ≡ this.handleStuff.bind(this, 'stuff')
如您所知,有人提议为 .bind()
函数创建一个快捷方式,因此您可以这样写:
::this.handleStuff
它会像在 es5 中那样工作:
this.handleStuff.bind(this)
我的问题是:是否可以通过这种方式传递参数?
我的意思是用前面提到的快捷方式写这个:
this.handleStuff.bind(this, 'stuff')
这是 React 中很常见的模式,所以将其缩短一点会很好。
没有。 bind operator (spec proposal) 有两种形式:
方法提取
::obj.method ≡ obj.method.bind(obj)
"virtual method" 调用
obj::function ≡ function.bind(obj) obj::function(…) ≡ function.call(obj, …)
它们都没有partial application。对于你想要的,你应该使用箭头函数:
(...args) => this.handleStuff('stuff', ...args) ≡ this.handleStuff.bind(this, 'stuff')