Javascript 将任意对象传递给Coffeescript';s匿名函数
当我运行以下Coffeescript代码时: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) -&
@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);