ho una classe JavaScript che assomiglia a questo:Ambito di "questo" in JavaScript
function SomeFunction()
{
this.doSomething(function()
{
this.doSomethingElse();
});
this.doSomethingElse = function()
{
}
}
Questo codice genera un errore perché la portata di "questo" all'interno della funzione che viene passata in doSomething() è diverso da quello di "questo" al di fuori di quella funzione.
Capisco perché questo è, ma qual è il modo migliore per affrontare questo? Questo è quello che finisco per fare:
function SomeFunction()
{
var thisObject = this;
this.doSomething(function()
{
thisObject.doSomethingElse();
});
this.doSomethingElse = function()
{
}
}
Che funziona bene, ma sembra proprio un hack. Mi chiedo solo se qualcuno ha un modo migliore.
@Jon Kruger Questo è quello che faccio anch'io. Penso che sia abbastanza normale. Puoi cambiare 'this' con' call' e 'apply', ma non sempre ciò che stai facendo bene. Un'altra opzione sta passando a 'this' come parametro, ma questo sembra ancora di più di un hack. –
@ Jonathon Cosa intendi con "Puoi cambiare questo con call e apply"? –
@Jon Kruger Vedi questo, controlla anche il loro articolo per 'call': https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Objects/Function/Apply –