이 컨텍스트를 취득 나는 다음과 같은 문제가 : 권리 될 것 같지 않습니다 -context권리를 기능
내가 각도 ($scope.$apply()
)로 다음을 적용하는 함수를 덮어하려고 노력하지만, 내 this
을 하나.
Anno.prototype.switchTo = function(otherAnno) {
if (otherAnno != null) {
this.hideAnno();
return otherAnno.show();
} else {
console.warn("Can't switchTo a null object. Hiding instead.");
return this.hide();
}
};
그리고 다른 파일에서 나는 다음처럼 "덮어 쓰기":
var switchToFunction = AnnoModule.Anno.prototype.switchTo;
AnnoModule.Anno.prototype.switchTo = function(otherAnno) {
switchToFunction(otherAnno);
$scope.$apply();
};
을 그래서 실제로 내가 저장
(다른 파일에) 원래의 기능은 다음과 같습니다 원래 함수를 호출 한 다음 원본 함수를 다시 정의한 다음 원래 함수를 호출하여 범위를 적용합니다.
이제 문제가 발생합니다. 알 수 있듯이이 함수는 this.hideAnno()
을 사용하지만 재정의 된 함수에서 컨텍스트가 또 하나이므로 Chrome에서 "this.hideAnno()가 아닙니다."라는 오류가 발생합니다. 기능". 그러나 지금 나는 어떻게 내가 올바른 컨텍스트를 얻을 수 있는지 잘 모르겠다. 내가 this을 이해하려고 노력했지만 JavaScript가 너무 혼란 스럽기 때문에 실제로 이해가 가지 않습니다.
JavaScript의 혼란을 누군가 이해할 수 있습니까?
그래, 고마워. 그렇게 쉽지는 않을 것입니다 ... 나는 이미 당신이 thit과 동일한 위치에서'call' 메소드를 사용하여 시도해 보았습니다 만, 나는'this'를 첫번째 파라미터로 쓰지 않았습니다. – user5638730
도와 주셔서 감사합니다 :). 예,'call'이나'apply'의 유일한 목적은 함수를 호출 할 때'this'의 값을 설정하는 것입니다. – nem035