在Javascript中,在什么条件下只在构造函数中使用“this”是合适的

In Javascript, under what conditions is it appropriate to only use `this` in constructor functions?

本文关键字:this Javascript 在什么 条件下 构造函数      更新时间:2023-09-26

我在JSHint的配置选项中发现了一行有趣的代码。

与选项相关联的注释读取Tolerate using this in a non-constructor function.

我很困惑。我是否误解了配置选项?

不是有很多情况下你想在非构造函数中使用this吗?你什么时候想要得到警告?

此选项用于告诉JSHint将使用有效的this参数调用函数。

例如:

function myRandomFunction() {
    alert(this.something);
}
myRandomFunction.call(someObject);

如果启用了严格模式,JSHint将警告myRandomFunction不应该使用this,因为它看起来不像构造函数或成员函数
如果您知道它总是用this调用(例如,作为回调),则可以添加/*jshint validthis: true */来抑制警告。

我认为非构造函数上的每个"this"都可以用一个有意义的参数来替换。另一方面,使用"this"引用对象的实现不好的函数很容易使应用程序出现难以调试的错误。所以,我真的认为这是一个有效的选择,特别是如果项目团队规模很大,一些成员经验不丰富的话。