EDIT: this issue is related to JSHint, rather than JSLint - changed the tag.
以下给出了“可能的严格违规”。我理解为什么会发生违规 - 这是因为在 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){
// ...
}
除了使用上述方法之外,是否有组织代码来解决问题的方法?
最佳答案
正确解决此问题的方法在您的问题中。做 #1:
Widget.prototype.doSomething = function (){
console.log(this.name + " did something");
}
linting 的全部意义在于它可以防止您在源代码中 犯常见错误,并且您看到的错误是完全正确的:您不应该看到this
在未在对象上声明的函数中提及。
Linting 与程序执行时的行为方式无关。这并不是说 linting 不“相信”您的方法将在对象上调用,而是您的源代码 包含已知有问题的模式。您可以随心所欲地解决它,但只要该模式 仍在您的源代码中,您仍然会遇到 linting 问题。
如果想忽略,那就用/*ignore jslint start*/
和/*ignore jslint end*/
包裹起来,但是问题还是会那里。
关于javascript - 如何正确解决这个 JSHint "Possible strict violation",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29088762/