我可以通过使用函数绑定来保留默认值吗?如果没有,为什么

Can I conserve the default this by using Function.bind ? If no, why?

本文关键字:默认值 如果没有 为什么 保留 可以通过 函数 绑定      更新时间:2023-09-26

假设我有一个函数:

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

我有一个 React 组件,我在那里做:

<input onChanged={this.onSomethingChanged.bind(null, "username")} />
  1. 如果我通过这个Arg,我的this null是否守恒?
  2. 如果没有,我怎么能在不使用显式this(不写this.onSomethingChanged.bind(this, "username"))的情况下保存它。
  3. 如果不是(再次),为什么 JavaScript 阻止了这一点?有解决方法吗?

谢谢!

不,函数的上下文(this)将在strict modenull,全局对象(window)将在non-strict模式下

如果您不喜欢bind方法,可以使用 ES6 箭头函数来处理此问题:

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

或者,如果您不喜欢括号:

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

其中$是事件对象(可以根据您的喜好替换为e或任何其他字符)。

No.这是任何函数中的第一个参数。通过传入 null,您说这是 null。

请改为执行此操作。

<input onChanged={this.onSomethingChanged.bind(this, "username")} />
相关文章: