2016-05-29 5 views
0

Ich habe eine Konstruktorfunktion:JSLint: Unerwartetes Dangling in einer Konstruktorfunktion. Warum?

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

und später

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

JSLint reklamierte

Unexpected baumelnden '_' in '_property'

Aber wenn ich lese Die Erklärung zu dieser Warnung finde ich:

ESLint löst diese Warnung nur für Variablen- und Funktionskennungen und nicht für Objekteigenschaftskennungen aus. jslinterrors.com

Ich dachte this._property eine Objekt-Eigenschaft wäre ... so würde ich erwarten, dass JSLint damit glücklich sein sollte. Was mache ich hier falsch?

+1

Es scheint, die Verwirrung kommt, weil Sie denken, dass Objekteigenschaften keine Identifikatoren sind. Tatsächlich sind sie Bezeichner, eine Obermenge von Bezeichnern. Aber wenn sie mit _ beginnen oder enden, werden sie auch Identifikatoren sein. – Oriol

+0

Nun, ich denke, dass beide Bezeichner sind, aber dass sie unterschiedlich behandelt werden, abhängig von der Art der Variablen, auf die sie zeigen. Ich dachte in diesem Fall ist ein Variablenbezeichner der Name einer lokalen Variablen und ein Objekteigenschaftsbezeichner ist ein Name einer Variablen, die Teil eines Prototyps oder Objekts ist. – treeno

+1

Ist das eine ** J ** SLint-Frage oder eine ** E ** SLint-Frage? Sie haben ein jslint-Tag und erwähnen, dass sich JSLint beschwert, aber dann geben Sie ein ** E ** SLint-spezifisches Stück Text von jslinterrors.com an. Wenn du ESLint-Verhalten willst, kenne ich eine gute Lösung ...; ^) – ruffin

Antwort

1

js haben keine Vorstellung von „privaten“ & Bezeichner mit dem Unterstrich vorangestellt werden häufig verwendet, eine private Variable, um anzuzeigen, aber hier ist es bietet keine Privatsphäre

Wenn Sie JSLint verwenden, können Sie Beheben Sie den Fehler, indem Sie die Option nomen (Nomenklatur) auf true setzen.

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

Sie selbst Ihre Constructor sehen können, indem Sie die this nicht an der Vorderseite der Methoden/Variablen hinzugefügt:

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 
} 

Sie folgen Sie den Anweisungen kann eine Benachrichtigung deaktivieren des Fehlers HERE

oder verwenden Sie keinen Unterstrich.

Verwandte Themen