2014-03-25 56 views
0

我不知道如何短語得當,所以我不能用谷歌找到答案,但這裏基本上是我的問題:在CoffeeScript中,如何將函數作爲函數的參數傳遞,這又會引發一個參數?

我希望我的CoffeeScript輸出這樣的事情在JS:(我正在開發一個節點應用)

var someapp = require('someapp') 
var another = require('another') 

someapp.configure(function() { 
    someapp.use(another.do('argument')); 
}); 

所以我寫了它這種方式的CoffeeScript:

someapp = require 'someapp' 
another = require 'another' 

someapp.configure() -> 
    someapp.use another.do 'argument' 

但是,相反,我得到這樣的輸出:

some.configure(function() { 
    return someapp.use(another["do"]('argument')); 
}); 

顯然,我最大的問題是線路return someapp.use(another["do"]('argument'));我無法在CoffeeScript文檔或其他地方找到合適的語法,所以我希望有人能指出我正確的方向。提前致謝。

+0

你的輸出有什麼問題?我認爲這是等同的。 another.do == another [「do」] –

+0

'do'是保留字(和關鍵字)。這是正常的行爲。 – Florent

+0

我的印象是「another.do'與另一個[」do「]'不同......」是這樣嗎?對不起,我不是Javascript語法的專家,但我認爲'another.do'例如指另一個類中的函數,而另一個[「do」]指代''做''作爲關鍵字的另一個數組。任何人都可以澄清? –

回答

1

按照docs

的CoffeeScript提供do關鍵字,它立即調用傳遞函數,轉發任何參數。

所以,CoffeeScript的輸出another["do"]避免使用do保留關鍵字。

此外,在這種情況下,函數another.do是碰巧是函數的對象屬性。可以通過使用another.do()another["do"]()來訪問它。

+0

嗯,我用'do'作爲函數,忘記它是一個保留關鍵字。假設我不使用'do',而是使用'happy',它仍然輸出另一個[「happy」]而不是'another.happy',這是我期待的。 –

+0

@KixPanganiban出於某種原因,Coffeescript似乎通過使用'[]'符號而不是點符號來輸出訪問的對象屬性。也許是區分對象方法,我認爲你只能用點符號來調用對象方法。 – Aliou

相關問題