基于Coffeescript和标记的JS执行

时间:2012-06-18 16:07:32

标签: coffeescript markup

从另一个线程我发现这个关于基于标记的JS执行的精彩教程 Garber-Irish解决方案:

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的新手,现在正在做一个codchool.com课程。 我想“new”关键字对于coffeescript来说是特殊的。

有没有解决方法呢?

谢谢!

2 个答案:

答案 0 :(得分:2)

new在JavaScript中很特别,CoffeeScript知道这一点,所以即使使用保留关键字命名方法也是不好的做法,它会发出实际可行的代码。

答案 1 :(得分:2)

如果您需要使用new,可以使用[]来定义该功能:

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

并称之为:

SITENAME.surveys['new']()

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

快速查看您的链接表明您将使用以下内容访问该功能:

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

所以调用这些方法无关紧要,因为无论如何你总是用它们的(字符串)名称来引用它们。