【发布时间】:2013-01-31 06:48:08
【问题描述】:
编辑:自己解决了。 我通过将代码包装在一个类中来完成这项工作,所以@/this 指的是我的对象而不是窗口
我正在编写一个咖啡脚本脚本,但没有使用 Class。我的 javascript 代码包含在一个匿名函数中:
(function() { ... }).call(this)
我有一个复选框列表,例如明天、昨天、下周、下个月等等。用户可以选择其中的一项或多项。我没有检查用户选择的内容,而是存储这些复选框类名(明天,下周......)。我没有检查我有哪些类名,然后调用适当的方法,而是创建了与类名对应的方法。
如果我的明天()是在全局范围内定义的,我会这样称呼它:
this[expression]()
其中表达式保存类名,例如明天。
为了让它工作,我这样定义了我的函数:
this.tomorrow = function() {
return console.log("I was triggered");
};
tomorrow() 现在在全局范围内定义。有没有办法不用太多努力就可以不在全局范围内定义函数?
【问题讨论】:
-
您的问题到底是什么?如果你有一个全局定义的函数并且
this是windows对象,你可以通过this[expression]()调用你的函数。 -
@Amberlamps:使用咖啡脚本和包装是为了不让你的代码在全局范围内混乱......
-
我知道!也许你下次会更准确地表达你的问题。如果您将代码包装在匿名函数中并且不以任何方式触及全局范围,那么您应该如何在匿名函数之外访问这些函数?您可以定义一个全局可访问的对象,并在该对象中定义所有函数。
-
@Amberlamps:coffeescript 编译器正在添加匿名方法,并在末尾添加 .call(this)。查看我最初帖子中的第一行代码。我不需要从外部访问这些方法,因此它们不需要在全局范围内。
-
我还是不知道,你要的是什么???
标签: javascript jquery coffeescript