這-方面,我有以下問題:得到正確的功能
我嘗試覆蓋功能與角($scope.$apply()
)然後應用它,但我this
似乎-context不會是正確的一。
原有功能(在另一個文件中),如下所示:
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();
}
};
然後在另一個文件I「覆蓋」是這樣的:
var switchToFunction = AnnoModule.Anno.prototype.switchTo;
AnnoModule.Anno.prototype.switchTo = function(otherAnno) {
switchToFunction(otherAnno);
$scope.$apply();
};
所以其實我保存原始函數,然後重新定義原始函數以調用原始函數,然後應用範圍。你可以看到,函數使用this.hideAnno()
,但在我重新定義的函數中,上下文是另一個,這就是爲什麼chrome拋出一個錯誤,說「this.hideAnno()不是一個功能」。但是現在我不確定我如何才能找到正確的上下文。我試圖理解this,但是JavaScript很混亂,我真的不明白。
有人能幫我理解JavaScript混淆嗎?
工作,謝謝。預計不會那麼容易......我甚至已經嘗試在你所處的位置使用'call'方法,但是我沒有將'this'作爲第一個參數。 – user5638730
很高興幫助:)。是的,'call'或'apply'的唯一目的是在調用一個函數時設置'this'的值,而不是其他的 – nem035