2011-08-17 4 views
0

J'essaie d'accéder à une variable de classe par une méthode d'instance par un eval (Function)accès à une variable classe

class Foo 
    @classVariable = "helow" 

class Bar extends Foo 
    bar: -> (new Function("console.log(Foo.classVariable)")).call @ 
    baz: -> console.log(Foo.classVariable) 

(new Bar()).baz() 
(new Bar()).bar() 

mais la méthode bar soulever une erreur, me disant ReferenceError: Foo is not defined

Tous conseils? Y en a-t-il un autre pour accéder à une variable de classe?

+1

Que signifie "acceed" veut dire? – Paul

+0

@Paul peut-être "accès" est le bon mot. L'anglais n'est pas ma langue maternelle – jney

+0

Pas de soucis, merci pour la clarification. J'ai édité la question pour vous. – Paul

Répondre

1

Lorsque vous créez une fonction en transmettant une chaîne au constructeur Function, cette fonction peut uniquement voir la portée globale (voir the MDN docs). Si vous avez écrit

class (window ? global).Foo 
    ... 

alors votre code fonctionnerait. Sinon, au lieu d'utiliser le constructeur Function, il suffit d'utiliser eval:

bar: -> eval "console.log(Foo.classVariable);" 
+0

Merci, je vais essayer votre solution, quand je serai de retour chez moi. J'ai déjà essayé d'utiliser 'eval' – jney

Questions connexes