2016-01-07 77 views
0

我一直在玩巴比爾和裝飾。例如:類裝飾器可以接收構造函數和附加參數嗎?

function test(target) { 
} 

@test 
class A {} 

我擔心的是,如果有一些方法來使用裝飾針對一類,也可以給參數所謂的裝飾,並不會失去獲得構造函數的機會第一個參數:

function test(target, arg1, argN) { 
    // target will be "hello", arg1 will be "world" and argN undefined, 
    // while I would expect target to be the constructor function 
} 

@test("hello", "world") 
class A {} 
+0

你爲什麼不嘗試一下,看看它是如何工作的? –

+0

@torazaburo爲什麼你不仔細閱讀我的問題? :D查看'test'函數中的註釋。你不覺得我已經試過自己了嗎? –

+0

你好,我不確切知道你嘗試了什麼,但是如果你已經通過babel-node或類似的方式運行你的程序,你會收到一條錯誤消息「未定義不是函數」或等價的。從那個人可能會推斷,如果需要的話,在查看所編譯的代碼的幫助下,問題在於@test(「hello」,「world」)沒有定義,因爲你沒有從'test'返回任何東西,而它應該評估一個正在裝飾的對象將被傳遞的函數 –

回答

0

是這樣工作的

function test(target, arg1, argN) { 
    return function(clazz) { 
    console.log(target, arg1, clazz) 
    } 
} 

@test("hello", "world") 
class A {} 
+0

謝謝;)我忘記了在裝飾器中返回函數的事情...... –

相關問題