2017-10-13 8 views
0

J'essaie d'appeler une fonction de classe à l'intérieur d'un objet stocké dans une autre fonction de la même classe. Je ne peux pas utiliser this, car il fait référence à l'objet et non à la classe. L'appel direct de la fonction par son nom ne fonctionne pas non plus, car il génère une erreur "non défini".Comment puis-je appeler une fonction de classe à partir d'un objet?

J'ai code équivalent à ceci:

class X extends Y { 
    functionA() { 
     console.log("Function called!"); 
    } 
    functionB() { 
     window.testObject = { 
      objectFunction() { 
       // I need to call functionA from inside here 
      } 
     } 
    } 
} 

Comment puis-je appeler functionA à l'intérieur objectFunction?

+0

Toutes les solutions de https://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-inside-a-callback appliquent ici. –

Répondre

3

Vous pouvez simplement définir une autre variable (par exemple, self) égale à this avant this changement.

class X extends Y { 
    functionA() { 
     console.log("Function called!"); 
    } 
    functionB() { 
     let self = this; 
     window.testObject = { 
      objectFunction() { 
       // I need to call functionA from inside here 
       self.functionA(); 
      } 
     } 
    } 
} 
+1

Votre réponse n'est pas fausse mais veuillez noter qu'il s'agit d'une * odeur de code *, c'est-à-dire un symptôme de mauvaise conception. –

+0

Fonctionne parfaitement, et c'est assez évident maintenant que je connais la réponse. Merci! Je marquerai aussi correct dès qu'il me le permettra. – dieortin

+0

@JaredSmith comment pourrais-je le faire mieux? J'utilise le chargeur Google Webfonts, et il nécessite un objet qui a entre autres choses les méthodes de rappel qui sont appelées quand les polices sont chargées (https://github.com/typekit/webfontloader) Je fais tout cela dans un classe, et ont besoin de rendre du texte lorsque la police termine le chargement. – dieortin