2010-03-22 4 views
0

Je vais supposer que la structure globale de mon code tel qu'il est actuellement est «meilleur», sinon cette question devient trop longue, mais si j'en ai fait erreurs évidentes (ou si j'ai rendu la vie difficile pour moi-même) alors s'il vous plaît corriger!

En utilisant jQuery, j'ai un javascript « classe » défini quelque chose comme ceci:

function MyClass() { 
    this.noise = "Woof" 
    this.dostuff = function() { 
    $.getJSON("http://cows.go",function(moo) { 
     this.noise = moo.inEnglish; 
    } 
    } 
} 

var instance = new MyClass(); 
instance.doStuff() 
console.log(instance.noise) 

J'attends un peu moo un peu de boire du thé dans la console, mais bien sûr, je reçois une erreur au sujet this.noise pas définie (car $.getJSON ne passe pas par this, non?)

toute suggestion quant à la façon de pouvoir affecter instance.squeak pour tout et tous les cas de MyClass sans ingérence?

Répondre

3

Vous allez aimer le gars qui a inventé la fermeture:

function MyClass() { 
    this.noise = "Woof" 

    this.dostuff = function() { 
    var me = this; 
    $.getJSON("http://cows.go",function(moo) { 
     me.noise = moo.inEnglish; 
    } 
    } 
} 
+0

se sent un peu sale, mais encore une fois tout cela fait à mon Javascript choyé nature ruby: P Merci! –