Ich habe eine JavaScript-Klasse, die wie folgt aussieht:Umfang „this“ in JavaScript
function SomeFunction()
{
this.doSomething(function()
{
this.doSomethingElse();
});
this.doSomethingElse = function()
{
}
}
Dieser Code einen Fehler wirft, weil der Umfang der „this“ innerhalb der Funktion, die in doSomething() übergeben ist anders als der Bereich von "this" außerhalb dieser Funktion.
Ich verstehe, warum das ist, aber was ist der beste Weg, damit umzugehen? Das ist, was ich am Ende mache:
function SomeFunction()
{
var thisObject = this;
this.doSomething(function()
{
thisObject.doSomethingElse();
});
this.doSomethingElse = function()
{
}
}
Das funktioniert gut, aber es fühlt sich einfach an wie ein Hack. Ich frage mich nur, ob jemand einen besseren Weg hat.
@Jon Kruger Das mache ich auch. Ich denke, das ist ziemlich normal. Sie können "this" mit "call" und "apply" ändern, aber das passt nicht immer zu dem, was Sie gut machen. Eine andere Option ist es, 'this' als Parameter zu übergeben, aber das fühlt sich eher wie ein Hack an. –
@ Jonathon Was meinen Sie mit "Sie können dies mit Anruf ändern und anwenden"? –
@Jon Kruger Siehe hierzu auch ihren Artikel für 'call': https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Objects/Function/Apply –