JSHint "엄격한 위반 가능성이 있습니다." `bind`를 사용할 때
이 간단한 코드를 고려하십시오.
"use strict";
var obj = {
f: function() {
this.prop = 'value';
g.bind( this )();
}
};
function g() {
console.log( this.prop );
}
이 코드의 유효성을 검사하려고하면 jshint Possible strict violation.
에서 console.log( this.prop );
. 이는 this
함수의 엄격 모드에서 정의되지 않았기 때문 입니다.
하지만이 함수를 호출하기 전에 바인딩하고 있으므로 this
올바른 개체입니다.
이 "디자인 패턴"을 사용하여 주요 개체를 어지럽히 지 않도록합니다. 매개 변수에 속성을 전달하면 함수도 복잡해 지므로이를 거부합니다. 게다가 이것이 바로 그 이유 bind
입니다.
JSHint가이 작업을 수행 할 수있는 방법이 있습니까?
코드를 실행하지 않고이 경우를 감지하는 것은 매우 어렵습니다. 옵션 validthis
을 사용 하여이 경고를 억제 할 수 있습니다 .
"use strict";
var obj = {
f: function() {
this.prop = 'value';
g.bind( this )();
}
};
function g() {
/*jshint validthis:true */
console.log( this.prop );
}
jshint 주석은 함수 범위라는 점에 유의해야합니다. 따라서 주석은 g
다음 줄뿐만 아니라 함수 와 내부 함수에 대해 작동합니다 .
this
모두 함께 사용하지 않도록 코드를 다음과 같이 수정하는 경우에도 동일한 효과를 얻을 수 있습니다 .
"use strict";
var obj = {
f: function() {
this.prop = 'value';
g.bind( null, this )();
}
};
function g(self) {
console.log( self.prop );
}
다음은 jshint에 대한 패턴이나 특정 마크 업을 변경할 필요가없는 더 간단한 솔루션입니다.
"use strict";
var obj = {
f: function() {
this.prop = 'value';
G.bind( this )();
}
};
function G() {
console.log( this.prop );
}
jshint는 대문자로 시작하는 함수가 인스턴스화되고 항상 this
사용할 수 있는 클래스라는 규칙을 따르고 있다고 가정합니다 .
시험:
"use strict";
var obj = {
f: function() {
this.prop = 'value';
g.bind( this )();
}
};
var g = function() {
console.log( this.prop );
}
이것은 당신이 말한 것과는 다른 "디자인 패턴"이며, 동일한 것을 달성하지만 문제를 완전히 피합니다.
"use strict";
function obj() {
this.prop = '';
}
obj.prototype.f = function obj_f() {
this.prop = 'value';
this.g();
};
obj.prototype.g = function obj_g() {
console.log( this.prop );
};
다음과 같이 호출합니다.
var myO = new obj();
myO.f();
참고URL : https://stackoverflow.com/questions/12057427/jshint-possible-strict-violation-when-using-bind
'programing tip' 카테고리의 다른 글
Python에서 YAML 파일을 구문 분석하고 데이터에 액세스합니까? (0) | 2020.10.24 |
---|---|
Int를 C #의 Generic Enum으로 캐스팅 (0) | 2020.10.24 |
TGitCache.exe를 정상적으로 중지하고 시작할 수있는 방법 (0) | 2020.10.24 |
iPython에서 Pandas Library를 사용하여 .xlsx 파일을 읽는 방법은 무엇입니까? (0) | 2020.10.24 |
Eclipse에서 두 번째 편집기보기를 여는 방법은 무엇입니까? (0) | 2020.10.24 |