0

从这里的另一个线程中,我发现了这个关于基于标记的 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 的新手,现在正在学习 codeschool.com 课程。我猜“new”关键字对于咖啡脚本来说是特别的。

有什么解决方法吗?

谢谢!

4

2 回答 2

2

new在 JavaScript 中是特殊的,CoffeeScript 意识到了这一点,因此它发出的代码实际上可以工作,即使使用保留关键字命名方法是不好的做法。

于 2012-06-18T16:12:23.097 回答
2

如果需要使用new,可以使用[]来定义函数:

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

并称之为:

SITENAME.surveys['new']()

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

快速查看您的链接表明您将通过以下方式访问该功能:

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

因此,调用什么方法并不重要,因为无论如何您总是会通过它们的(字符串)名称来引用它们。

于 2012-06-18T16:41:55.453 回答