2012-06-18 40 views
0

從另一個線程在這裏我發現了基於標記的JS執行 加伯 - 愛爾蘭的解決了這個偉大的教程:的CoffeeScript和標記基於JS執行

http://www.viget.com/inspire/extending-paul-irishs-comprehensive-dom-ready-execution/

我檢查了我該怎麼辦的這部分中的CoffeeScript。

該工程確定:

SITENAME.surveys.show = -> 
    alert "Hello CoffeeScript" 

這使得出來:

SITENAME.surveys.show = function() { 
    return alert("Hello CoffeeScript"); 
}; 

這個人是不是太高興了:

SITENAME.surveys.new = -> 
    alert "Hello CoffeeScript" 

SITENAME.surveys["new"] = function() { 
    return alert("Hello CoffeeScript"); 
}; 

我是新來的CoffeeScript並做了codeschool .com課程現在。 我猜「新」關鍵字是特別爲咖啡腳本。

有沒有解決方法?

謝謝!

回答

2

new是在JavaScript特殊的CoffeeScript也知道這一點,所以它發射的代碼,將實際工作,即使它是不好的做法,以使用保留關鍵字名稱的方法。

2

如果你需要使用new,您可以使用[]定義功能:

SITENAME.surveys['new'] = -> 
    alert "Hello CoffeeScript" 

,並把它稱爲:

SITENAME.surveys['new']() 

演示:http://jsfiddle.net/ambiguous/Y3qnt/

快速回顧你的鏈接建議你將訪問這樣的功能:

controller = 'surveys' 
action  = 'new' 
SITENAME[controller][action]() 

因此,無論如何,調用方法並不重要,因爲無論如何,您始終會用(字符串)名稱引用它們。