编辑:此问题与JSHint有关,而不是JSLint - 更改了标记。
以下内容给出了“可能的严格违规行为”。我理解为什么会发生违规 - 这是因为在jslint不相信的函数中使用this
是一种方法:
function Widget(name){
this.name = name;
}
Widget.prototype.doSomething = doSomething;
function doSomething(){
console.log(this.name + " did something");
}
虽然,以下方法解决了jslint警告,但它们迫使我进入一个我宁愿避免的代码组织:
1)声明内联函数:
Widget.prototype.doSomething = function (){
console.log(this.name + " did something");
}
2)创建一个传递this
的包装函数:
Widget.prototype.doSomething = function (){ return doSomething(this); };
function doSomething(self){
// ...
}
除了使用上述方法之外,有没有办法组织代码来解决问题?
答案 0 :(得分:1)
正确解决此问题的方法在您的问题中。做#1:
Widget.prototype.doSomething = function (){
console.log(this.name + " did something");
}
linting的全部意义在于它可以防止您在源代码中出现常见错误,并且您看到的错误完全正确:您不应该看到{ {1}}在未在对象上声明的函数中提及。
Linting与程序执行时的行为方式无关。并不是说linting不相信"您的方法将在对象上调用,您的源代码包含已知存在问题的模式。您可以随心所欲地解决这个问题,但只要模式仍在源代码中,您仍然会遇到掉毛问题。
如果您想忽略它,请将其打包在this
和/*ignore jslint start*/
中,但问题仍然存在。