如何正确处理这个JSHint"可能的严格违规"

时间:2015-03-16 23:30:17

标签: javascript jshint

  

编辑:此问题与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){
  // ...
}

除了使用上述方法之外,有没有办法组织代码来解决问题?

1 个答案:

答案 0 :(得分:1)

正确解决此问题的方法在您的问题中。做#1:

Widget.prototype.doSomething = function (){
   console.log(this.name + " did something");
}

linting的全部意义在于它可以防止您在源代码中出现常见错误,并且您看到的错误完全正确:您不应该看到{ {1}}在未在对象上声明的函数中提及。

Linting与程序执行时的行为方式无关。并不是说linting不相信"您的方法将在对象上调用,您的源代码包含已知存在问题的模式。您可以随心所欲地解决这个问题,但只要模式仍在源代码中,您仍然会遇到掉毛问题。

如果您想忽略它,请将其打包在this/*ignore jslint start*/中,但问题仍然存在。