将任意对象传递给Coffeescript的匿名函数

时间:2012-08-24 09:18:37

标签: 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

2 个答案:

答案 0 :(得分:1)

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

应编译为(更新:请参阅Rob W的编译选项答案): -

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

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

进行调用

完整代码..

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

alert(myobj.sum 10,4)

答案 1 :(得分:1)

(function() {}).call(this);不是编译@sum = ...的结果,而是coffee可执行文件添加的结果。 This是编译的实际结果:

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

要获得不同/所需的输出,请使用the following code运行coffee -b -c(或coffee -bccoffee --bare --compile):

(-> 
  @sum = (x, y) -> x + y
).call WHATEVER

变为

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