2016-05-29 5 views
0

私はコンストラクタ関数があります。JSLint:コンストラクタ関数で予期しないダングリングが発生しました。どうして?

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

以降

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

JSLintは '_property'

予期しないダングリング '_' に不平を言っている。しかし、私が読んだときにこの警告への説明私はこれを見つける:

ESLintは、オブジェクトの識別子ではなく、変数および関数の識別子に対してのみ警告を発します。 jslinterrors.com

私はthis._propertyがオブジェクトプロパティであると思っていたので、私はJSLintがそれに満足していると思います。私はここで間違って何をしていますか?

+1

オブジェクトのプロパティは識別子ではないと思うので、混乱しているようです。実際、それらは識別子のスーパーセットである識別子の名前です。しかし、 '_'で始まったり終わったりすると、識別子になります。 – Oriol

+0

私は両方とも識別子だと思っていますが、彼らが指している変数の種類によって異なる扱いをしています。この場合、変数識別子はローカル変数の名前であり、オブジェクトプロパティ識別子はプロトタイプまたはオブジェクトの一部である変数の名前です。 – treeno

+1

** ** SLintの質問か** E ** SLintの質問ですか?あなたはjslintタグを持っていて、JSLintが不平を言っていると言いますが、jslinterrors.comの** E ** SLint固有のテキストを引用します。 ESLintの動作が必要な場合、私は良い解決策を知っています...;)^ – ruffin

答えて

1

jsがすることができます、しばしばプライベート変数を示すために使用されていますが、JSLintを使用している場合、ここでそれがどのプライバシー

を提供していません下線文字で始まる「プライベート」&識別子の概念を持っていません。 nomen(命名規則)オプションをtrueに設定してエラーを修正してください。あなたは、通知をオフにする指示に従うことができ

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 
} 

:あなたはthisはメソッド/変数の前に追加されていない、あなたのコンストラクタをロギングすることで、自分自身のために見ることができます

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

エラーの内容HERE

またはアンダースコアを使用しないでください。

関連する問題