Coffeescript 咖啡脚本中的字段?

Coffeescript 咖啡脚本中的字段?,coffeescript,Coffeescript,我想要的是别名的用法 _别名的用法:=> @函数别名 让它表现出同样的行为。i、 我想要一个功能性更强的语法。我尝试了多种组合,但都没有成功。事实上,我必须评估我的功能,以获得里面的好东西困扰着我 一个应用程序将取代此应用程序: class @A A_Function_Alias: => @my_function my_function: => usage_of_alias: => @A_Function_Alias.call() 作为eve

我想要的是
别名的用法

_别名的用法:=> @函数别名

让它表现出同样的行为。i、 我想要一个功能性更强的语法。我尝试了多种组合,但都没有成功。事实上,我必须评估我的功能,以获得里面的好东西困扰着我

一个应用程序将取代此应用程序:

class @A
   A_Function_Alias: => @my_function

   my_function: =>

   usage_of_alias: =>
      @A_Function_Alias.call()
作为
event.call().hi()

我可以有一些其他声明,允许我以
event.hi()的形式访问事件


行为更像字段而不是属性的东西

我想你想要这个:

event: => new Event(@my_function)

计算类时,
@
是类构造函数对象,即类对象本身。而
::
操作符允许您深入原型。因此类主体中的
@::foo
编译为
MyClass.prototype.foo

因此,这首先是创建一个名为
my_function
的普通实例方法,该方法在
a.prototype.my_function
上定义。然后我们创建了一个名为
a_Function\u Alias
的新实例方法,并直接从我们刚刚创建的类对象原型中分配函数。现在
my\u function
A\u function\u Alias
都指向完全相同的函数对象


但作为一个更明智的选择,我是否可以建议一种模式,定义类可以使用的私有内部函数,然后更直接地分配它,而无需原型访问

class @A
   my_function: => alert 'my function!'

   A_Function_Alias: @::my_function

   usage_of_alias: =>
      @A_Function_Alias()
      # some other code...

我不太清楚我是否理解你想要实现的目标。更确切地说,为什么,如果你能发布更多的代码,也许一些更具体的领域,我相信我们可以帮助解决你的问题。您不必使用
eval
,这是肯定的。
别名的用法:@A\u函数\u别名
是您想要的吗?现在还不清楚你到底想要什么。我只是不想使用.call()。这样做的意义纯粹是装腔作势。似乎绑定函数不能指向其他绑定函数,除非它们本身是绑定函数。我做了一些编辑,可能会澄清这个问题。这看起来非常好,谢谢。我理解你关于另一种选择的建议。我需要一个事件的名称空间,以便可以使用jQuery1.7的on和off api。因为我在CoffeScript中没有将方法名用作名称空间的反射,所以我正在为我的事件创建一个包装器。它看起来是这样的:
event:=>newevent(“Class.method”,@method)
我想通过将event而不是event.call()传入我的视图来绑定事件。我也不想内联我的事件创建,这样在不使用EventFactory或实现event.equals().Ahh的情况下测试就更容易了。这种方法存在一个约束性问题。我希望很快会有更多的信息。好吧,这都是因为我错过了一个require语句,它让我经历了这整个考验。我的最终解决方案是在构造函数中分配字段。这删除了时髦的语法。
class @A

  # Only code inside this class has access to this local function
  innerFunc = -> alert 'my function!'

  # Assign the inner funciton to any instance methods we want.
  my_function: innerFunc
  A_Function_Alias: innerFunc

  usage_of_alias: =>
    @A_Function_Alias()
    # or
    @my_function()
    # or
    innerFunc()
    # they all do the same thing