Javascript 将任意对象传递给Coffeescript';s匿名函数

Javascript 将任意对象传递给Coffeescript';s匿名函数,javascript,coffeescript,Javascript,Coffeescript,当我运行以下Coffeescript代码时: @sum = (x, y) -> x + y 我得到了编译后的Javascript: (function() { this.sum = function(x, y) { return x + y; }; }).call(this); 在Coffeescript中有没有一种方法可以将中的this替换为.call(this)中的任意对象,如myObject或任何东西 myobj.sum = (x, y) -&

当我运行以下Coffeescript代码时:

@sum = (x, y) -> x + y
我得到了编译后的Javascript:

(function() {

    this.sum = function(x, y) {
        return x + y;
    };

}).call(this);
在Coffeescript中有没有一种方法可以将
中的
this
替换为
.call(this)
中的任意对象,如
myObject
或任何东西

myobj.sum = (x, y) -> x + y
应编译为(更新:有关编译选项,请参阅Rob W的答案):-

这不是你想要的吗?因此,您还可以使用
myobj.sum a,b

完整代码

myobj = {}
myobj.sum = (x, y) -> x + y

alert(myobj.sum 10,4)
(function(){
})。调用(this)不是编译
@sum=…
的结果,而是由
咖啡
可执行文件添加的。是编译的实际结果:

this.sum = function(x, y) {
  return x + y;
};
要获得不同的/所需的输出,请使用以下命令运行
coffee-b-c
(或
coffee-bc
coffee-bare--compile
):

变成

(function() {
  return this.sum = function(x, y) {
    return x + y;
  };
}).call(WHATEVER);

您的代码不完整。请添加
@sum=(x,y)->x+y1之前/之后的内容不,这实际上是我的完整代码。这就是为什么我询问如何更改
This
对象,以便将
sum()
添加到我想要的任何对象中。
(function(){
})不是从
@sum=…
编译的。这些是在没有
--bare
标志的情况下运行
coffee
的结果。是编译的实际结果。@RobW:我不知道。我在控制台中运行
coffee-c示例。coffee
,我总是得到匿名函数包装器。我认为这是标准的。不,我想知道匿名函数是否可以以任何方式进行修改,比如传递一个不同于
this
@Amberlamps:为什么,是因为你想将
sum
函数扩展到你传递的任何对象?再说一遍,那个匿名函数再也不能被调用了,所以我看不出有什么意义。这正是我想要的。谢谢国旗起作用了。
(-> 
  @sum = (x, y) -> x + y
).call WHATEVER
(function() {
  return this.sum = function(x, y) {
    return x + y;
  };
}).call(WHATEVER);