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

在Javascript中,在什么条件下只在构造函数中使用'this'是合适的?,javascript,jslint,jshint,Javascript,Jslint,Jshint,我在JSHint的配置选项中找到了 与该选项相关的注释为允许在非构造函数中使用该选项。 我很困惑。我是否误解了配置选项 在很多情况下,您不想在非构造函数中使用this?您希望何时收到警告?此选项用于告诉JSHint将使用有效的此参数调用函数 例如: function myRandomFunction() { alert(this.something); } myRandomFunction.call(someObject); 如果“严格模式”处于启用状态,JSHint将警告myRan

我在JSHint的配置选项中找到了

与该选项相关的注释为
允许在非构造函数中使用该选项。

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


在很多情况下,您不想在非构造函数中使用
this
?您希望何时收到警告?

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

例如:

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

myRandomFunction.call(someObject);
如果“严格模式”处于启用状态,JSHint将警告
myRandomFunction
不应使用
this
,因为它看起来不像构造函数或成员函数。

如果您知道总是使用
this
调用它(例如,作为回调),您可以添加
/*jshint validthis:true*/
以抑制警告。

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

看看:-声明
duck.quack()
quack(duck)
是完全不同的。很公平。。在写我的答案时,我考虑的是函数,它们不是类成员,弄乱了当前的作用域。这很有意义。我想配置选项只需要多一点上下文:)