【发布时间】:2015-10-31 17:40:56
【问题描述】:
考虑这个简单的例子:
"use strict";
var Foo = {
field: 0,
func: function () {
this.field = 4;
}
}
JSLint 抛出错误:
意外的“这个”。在“this.field = 4”这一行。
我在 StackOverflow 中似乎有一些问题要求这个,在所有情况下,答案只是启用“容忍这个”标志。但是,我对 JSLint 的创建者为什么认为使用“this”是(或可能导致)错误很感兴趣。
另外,如果没有“this”关键字并且不期望用户将实例作为第一个参数传递,我将如何实现成员函数?
编辑也许我在这个问题上没有让自己足够清楚,尽管看起来很相似并没有回答我的问题:JSLint Error: Unexpected 'this'
这个问题的问题不在于问题本身,而在于它得到的答案。请注意接受的答案是:“我的建议是:告诉 JSLint 闭嘴”。我在帖子中特别指出,这对我来说不是一个有效的答案,因为我想了解为什么 JSLint 禁止使用它,而不是如何避免该错误。
【问题讨论】:
-
请注意,JSLint 不仅禁止可能导致错误的事情。它“强制”你使用特定的编码风格。
-
我想指出我在我的问题中特别提到它与我“复制”的不同,尽管没有特别引用链接。特别是当我说:“我在 StackOverflow 中似乎有一些问题要求这个,在所有情况下,答案只是启用“容忍这个”标志。我指的是这个问题,等等。请注意,从我的角度来看,该问题中接受的答案是不可接受的,因为禁用错误并不能解释导致错误的原因以及导致错误的原因。
-
@meskobalazs,很高兴知道。尽管如此,我还是很好奇什么是避免“this”的“好”编码风格,以及为什么根据 JSLint 显然正确使用“this”关键字是有缺陷的。
-
你应该问问 Douglas Crockford :) 也许他在 The Good Parts 中写下了它。
-
我认为从重复问题中接受的答案根本没有帮助,但是那里还有另一个更详细的答案,它讨论了不同类型的继承。此外,the JSLint help 说:“在语言中使用它会使谈论语言变得更加困难。这就像与 Abbott 和 Costello 进行结对编程。避免使用它。” (但这仍然不能真正解释为什么 ... :-))
标签: javascript this jslint