2012-12-27 105 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返回它的功能,或類似的東西。