我可以使用Function.bind来保存默认值吗?如果不是,为什么?

时间:2015-03-13 17:33:51

标签: javascript function reactjs

假设我有一个功能:

function onSomethingChanged(field, evt) {
    this.validate(field, evt.target.value);
}

我有一个React组件:

<input onChanged={this.onSomethingChanged.bind(null, "username")} />
  1. 如果我将this作为thisArg传递,我的null是否会得到保留?
  2. 如果没有,我怎么能在不明确使用this的情况下保存它(不写this.onSomethingChanged.bind(this, "username"))。
  3. 如果不是(再次),为什么JavaScript会阻止这种情况?有解决方法吗?
  4. 谢谢!

2 个答案:

答案 0 :(得分:1)

不,函数的上下文(this)在strict mode中为null,在window模式下为全局对象(non-strict

如果您不喜欢bind方法,可以使用ES6 arrow functions来解决此问题:

<input onChanged={()=>this.onSomethingChanged("username")} />

或者如果你不喜欢括号:

<input onChanged={$=>this.onSomethingChanged("username")} />

其中$是事件对象(可以由e或您喜欢的任何其他角色替换。)

答案 1 :(得分:0)

没有。这是过去任何函数的第一个参数。通过传入null,你说这是null。

改为做。

<input onChanged={this.onSomethingChanged.bind(this, "username")} />