我有一個JavaScript類,看起來像這樣:範圍的「本」在JavaScript
function SomeFunction()
{
this.doSomething(function()
{
this.doSomethingElse();
});
this.doSomethingElse = function()
{
}
}
因爲範圍「這個」內()傳遞到DoSomething的功能是此代碼拋出一個錯誤不同於該功能之外的「this」的範圍。
我明白這是爲什麼,但處理這個問題的最佳方法是什麼?這是我最終做的:
function SomeFunction()
{
var thisObject = this;
this.doSomething(function()
{
thisObject.doSomethingElse();
});
this.doSomethingElse = function()
{
}
}
這工作正常,但它只是感覺像一個黑客。只是想知道如果有人有更好的方法。
@Jon Kruger我也是這麼做的。我認爲這很正常。你可以用'call'和'apply'來改變'this',但這並不總是適合你做得很好。另一種選擇是將'this'作爲參數傳遞,但這更像是一種黑客。 – 2010-02-12 18:03:16
@Jonathon你是什麼意思「你可以改變這個電話和申請」? – 2010-02-12 18:16:08
@Jon Kruger看到這個,查看他們的文章「call」:https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Objects/Function/Apply – 2010-02-12 18:20:19