JSLint:构造函数中意外的悬空。为什么?

时间:2016-05-29 16:35:38

标签: javascript jslint

我有一个构造函数:

function Constructor(parameter) {
    this._property = parameter;
}

以后

Constructor.prototype.someFunction = function() {...}

JSLint抱怨

意想不到的悬挂&#39; <&#39;在&#39; _property&#39;

但是当我读到这个警告的解释时,我发现了这个:

  

ESLint仅针对变量和函数标识符而不是对象属性标识符引发此警告。 jslinterrors.com

我认为this._property将是一个对象属性...所以我希望JSLint应该对此感到满意。我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

js没有“私人”的概念。带有下划线字符的标识符通常用于表示私有变量,但此处它不提供任何隐私

如果您使用JSLint,则可以通过将nomen(命名法)选项设置为true来修复错误。

/*jslint nomen: true */
function Constructor(parameter) {
    this._property = parameter;
}

答案 1 :(得分:0)

您可以通过记录构造函数来自行查看this未添加到方法/变量的前面:

JSBIN of the code below

function Constructor(parameter) {
  this._property = parameter;
  this.property = parameter;
}

var x = new Constructor(5);
console.log(x); 
// logs: 
{
  _property: 5, // dangling error
  property: 5
}

您可以按照说明关闭错误HERE

的通知

或不使用下划线。