2012-12-27 106 views
0

在下面的代码中,我试图调用一个声明为对象的方法。我将如何去调用该函数?调用声明为函数的对象

var draw = function() { 
    anotherFunction(); 
} 

draw(); 

我得到一个错误“类型错误:属性对象[对象]窗口的‘平局’不是一个函数”

感谢。

+0

var draw定义在哪里?在另一个功能? – mplungjan

+8

上面的代码工作正常,你可以发布你的完整代码,所以我们可以看到它被调用的地方? – Austin

+1

它看起来像这个代码应该工作。 – Dan

回答

0

快速Javascript范围教训;当你这样做:

function someFunction() { 
     var foo = 'bar'; 
} 
someFunction(); 
// foo doesn't exist 

是因为它需要执行someFunction foo变量只活长;之后它就消失了。

您可以通过在“全局对象”上设置foo来解决此问题,即。 “窗口”:

function someFunction() { 
     window.foo = 'bar'; 
} 
someFunction(); 
// foo does exist! 

但是,除非你有一个非常小的网站,这将变得混乱非常快(编程语言都有范围是有原因的:把一切全局空间是很难一起工作)。因此,你真正需要做的就是更仔细地看看什么是创造富(什么是你的情况draw)和什么是富(draw),看看你不能让两者更接近在一起,或者有创建draw返回它的功能,或类似的东西。