2009-02-22 76 views

回答

10

使您的變量成爲對象的成員。然後你可以使用[]使用字符串來訪問對象的成員:

var byname = { 
    divabc: ..., 
    divxyz: ... 
}; 

function someFunction(link) { 
    someOtherFunction(byname['div'+link]); 
} 

someFunction('abc'); // calls someOtherFunction(byname.divabc) 
2

你應該能夠與「eval」功能來做到這一點。

0

正如wybiral說,所有你需要的是EVAL:

someFunction(link) { 
    someOtherFunction(eval('(div' + link + ')'); 
} 

基本上它是計算一個字符串作爲密碼的內容。很明顯,eval是一個危險的小工具,因爲它允許執行任意代碼,所以在使用時請注意。

+0

你能解釋一下背後的最內層設置括號的邏輯是什麼? – 2009-02-22 23:36:39

8

對於這種變量名的動態構造/訪問你應該使用替代對象符號其中:

object.member === object["member"] 

這種方式,您可以構建您的變量名作爲一個字符串,並用它在方括號內訪問對象成員。

3

eval會做到這一點,但它通常表示當你想合成這樣的標識符的程序的其他問題。正如Ionut所說,最好使用[]表示法。每當這樣的問題出現時,我喜歡鏈接到this

1

試試這個:

var divFoo = "bar"; 
function someFunction(link) { 
    someOtherFunction(this['div' + link]); 
} 
function someOtherFunction(value) { 
    alert(value); 
} 
someFunction("Foo");