2009-12-10 56 views
0

我知道這是一個真的遠射,但我想我會問:有沒有辦法找到變量的名稱作爲函數調用參數傳遞?調用時的Javascript函數參數名稱?

假設我有:

function test(tmp1, tmp2) { 
    // ... 
} 

var a; 
var b; 

test(a, b); 

我想獲得一個數組,像這樣:[a, b]。字符串也是可以接受的:["a", "b"]

我做不是想要["tmp1", "tmp2"],我知道我可以通過解析函數的字符串表示得到。

我在問,因爲我試圖通過真正的提取器改進我的caseclass.js庫(請參閱鏈接瞭解更多信息)。我知道只有對象是通過引用傳遞的,所以我試圖找到解決方法將提取的值傳遞迴佔位符變量。

謝謝!

+1

爲什麼這個問題標籤Scala呢? – ziggystar 2009-12-10 14:15:50

+0

我已經刪除了scala和case-class標籤。或者解釋爲什麼它們需要處理它們或丟棄它們。 – ziggystar 2009-12-10 15:11:59

+0

因爲我的caseclass.js庫試圖模仿Scala的案例類。這個問題具體是因爲我試圖在匹配中實現提取器。 – pr1001 2009-12-10 16:31:33

回答

0

也許你想看看eval()函數......但我從來沒有做過像你用javascript描述的東西。我甚至不確定這是可能的。

+0

我試圖避免評估,雖然你是對的,它可能是唯一可能的方式。如果是這樣,我想我會避免它 - 那麼太瘋狂了! – pr1001 2009-12-10 10:00:36

1

也許你可以看看由異常或錯誤引起的堆棧跟蹤,但我不確定它會起作用,它可能在不同的瀏覽器中以不同的方式工作。

0

如何做這樣的事情:

var a = { name: 'a', value: 'foo' }; 
var b = { name: 'b', value: 'bar' }; 

test(a, b); 

function test(tmp1, tmp2) 
{ 
    var paramArray = [ tmp1.name, tmp1.name ]; 
} 
+0

工作正常,但需要用戶指定我希望避免的變量名稱。我可能必須這樣做...... – pr1001 2009-12-10 16:34:41