J'ai une classe JavaScript qui ressemble à ceci:Portée de « ce » en JavaScript
function SomeFunction()
{
this.doSomething(function()
{
this.doSomethingElse();
});
this.doSomethingElse = function()
{
}
}
Ce code renvoie une erreur parce que la portée de cette « » à l'intérieur de la fonction qui est passé dans doSomething() est différent de celui de "ceci" en dehors de cette fonction.
Je comprends pourquoi c'est, mais quelle est la meilleure façon de gérer cela? C'est ce que je finis par faire:
function SomeFunction()
{
var thisObject = this;
this.doSomething(function()
{
thisObject.doSomethingElse();
});
this.doSomethingElse = function()
{
}
}
Cela fonctionne très bien, mais cela ressemble à un hack. Je me demandais juste si quelqu'un avait un meilleur moyen.
@Jon Kruger C'est aussi ce que je fais. Je pense que c'est plutôt normal. Vous pouvez changer 'this' avec' call' et 'apply', mais cela ne correspond pas toujours à ce que vous faites bien. Une autre option est de passer 'this' en paramètre, mais cela ressemble plus à un hack. –
@Jonathon Que voulez-vous dire par "Vous pouvez changer cela avec appel et appliquer"? –
@Jon Kruger Voir aussi, consultez leur article pour 'call', aussi: https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Objects/Function/Apply –