2009-06-09 55 views
2

通過做類似下面的事情,我已經可以獲得類中的所有函數。在actionscript 2.0中程序性地訪問一個函數的參數列表

for (var member in obj) { 
    if (obj[member] instanceof Function) { 
     var f:Function = obj[member]; 
     ... 
    } 
} 

有沒有辦法在ActionScript中獲取函數的參數列表?例如,我可以編寫一個這樣做的函數嗎?

function getFunctionArguments (f:Function) : Array { 
    var argumentArray:Array = new Array(); 
    for (...) { 
     ... 
     argumentArray.push({ name:<argumentName>, type:<argument type> }); 
    } 
    return argumentArray; 
} 

如果是這樣,我該填什麼省略號?

回答

2

Nosirree。我想給你一個解決方法,但是沒有辦法像這樣反省一個函數的簽名。

你可以做的是,當函數實際上是稱爲,在它裏面,你可以通過參數瀏覽無關的簽名,通過查看arguments對象。如:

function doSomething() { 
    if (arguments.length > 0) { 
     if (typeof arguments[0] == "string") { 
      .... 
     } 
    } 
} 

等等。但即使如此,也無法找到函數簽名中參數的名稱(即使簽名中沒有參數,這也可以正常工作,如上所述)。

+0

這是一個非常有用的知識,但我的動機是編寫一些基礎結構以使我的類可以通過調試代碼進行檢查,因此它需要是在進入函數體之前可以執行的操作。 如果其他人有更多聰明的技巧來貢獻,我會留下一些問題,但看起來你是對的。 – fastcall 2009-06-11 18:40:22

相關問題