javascript - 如何正确解决这个 JSHint "Possible strict violation"

标签 javascript jshint

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/

相关文章:

javascript - JavaScript 中的默认参数导致 jshint 错误

javascript - 在javascript中分割这个的逻辑?

javascript - 多个 jQuery - 添加第二个 jQuery 库时 Plupload 不起作用

javascript - 如何修改JSON数组?

javascript - 为什么 jsHint 说 "' setInterval' 未定义”

qunit - 在 Qunit 中跳过测试

javascript - 将 JavaScript 操作与 DOM 集成的最佳实践

javascript - 当一行中的元素数量可变时,如何使用 jQuery 为每一行着色?

javascript - 如何使用 JSHint 禁用有关 'this' 和严格模式的警告?

gulp - 如果第一个任务失败,后续的 gulp 任务也会失败