【问题标题】:Wrapped coffeescript scope - use a variable's value for calling function包装的咖啡脚本范围 - 使用变量的值来调用函数
【发布时间】:2013-01-31 06:48:08
【问题描述】:

编辑:自己解决了。 我通过将代码包装在一个类中来完成这项工作,所以@/this 指的是我的对象而不是窗口


我正在编写一个咖啡脚本脚本,但没有使用 Class。我的 javascript 代码包含在一个匿名函数中:

(function() { ... }).call(this)

我有一个复选框列表,例如明天、昨天、下周、下个月等等。用户可以选择其中的一项或多项。我没有检查用户选择的内容,而是存储这些复选框类名(明天,下周......)。我没有检查我有哪些类名,然后调用适当的方法,而是创建了与类名对应的方法。

如果我的明天()是在全局范围内定义的,我会这样称呼它:

this[expression]()

其中表达式保存类名,例如明天。

为了让它工作,我这样定义了我的函数:

  this.tomorrow = function() {
       return console.log("I was triggered");
  };

tomorrow() 现在在全局范围内定义。有没有办法不用太多努力就可以不在全局范围内定义函数?

【问题讨论】:

  • 您的问题到底是什么?如果你有一个全局定义的函数并且thiswindows 对象,你可以通过this[expression]() 调用你的函数。
  • @Amberlamps:使用咖啡脚本和包装是为了不让你的代码在全局范围内混乱......
  • 我知道!也许你下次会更准确地表达你的问题。如果您将代码包装在匿名函数中并且不以任何方式触及全局范围,那么您应该如何在匿名函数之外访问这些函数?您可以定义一个全局可访问的对象,并在该对象中定义所有函数。
  • @Amberlamps:coffeescript 编译器正在添加匿名方法,并在末尾添加 .call(this)。查看我最初帖子中的第一行代码。我不需要从外部访问这些方法,因此它们不需要在全局范围内。
  • 我还是不知道,你要的是什么???

标签: javascript jquery coffeescript


【解决方案1】:

我通过将我的代码包装在一个类中来完成这项工作,所以@/this 指的是我的对象而不是窗口。

@[expression]() 

现在按预期工作

【讨论】:

    猜你喜欢
    • 2012-10-10
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多