当我运行以下Coffeescript代码时:
@sum = (x, y) -> x + y
我得到了这个编译好的Javascript:
(function() {
this.sum = function(x, y) {
return x + y;
};
}).call(this);
Coffeescript中是否有办法用this
或其他任意对象替换.call(this)
中的myObject
?
答案 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 -bc
或coffee --bare --compile
):
(->
@sum = (x, y) -> x + y
).call WHATEVER
变为
(function() {
return this.sum = function(x, y) {
return x + y;
};
}).call(WHATEVER);