2011-08-17 101 views
0

我试图通过一个eval通过一个实例方法来访问类变量(Function访问类变量

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() 

但方法bar产生一个错误,告诉我ReferenceError: Foo is not defined

任何意见? 是否有另一个访问类变量?

+1

“acceed”是什么意思? – Paul

+0

@保尔可能“访问”是一个好词。英语不是我的母语 – jney

+0

不用担心,谢谢你的澄清。我为你编辑了这个问题。 – Paul

回答

1

当您通过将字符串传递给构造函数Function来创建函数时,该函数只能看到全局作用域(请参阅the MDN docs)。如果你写了

class (window ? global).Foo 
    ... 

然后你的代码将工作。或者,不使用Function构造函数,只需使用eval

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

谢谢,我会尝试你的解决方案,当我回到我的家。我已经尝试过使用'eval' – jney