someFunction(link) {
someOtherFunction('div' + link);
}
通過調用someFunction(「Test」),字符串「divTest」被傳遞給someOtherFunction()。但我想要傳遞變量「divTest」的值。在運行時構建javascript變量名稱
如何做到這一點?
someFunction(link) {
someOtherFunction('div' + link);
}
通過調用someFunction(「Test」),字符串「divTest」被傳遞給someOtherFunction()。但我想要傳遞變量「divTest」的值。在運行時構建javascript變量名稱
如何做到這一點?
使您的變量成爲對象的成員。然後你可以使用[]
使用字符串來訪問對象的成員:
var byname = {
divabc: ...,
divxyz: ...
};
function someFunction(link) {
someOtherFunction(byname['div'+link]);
}
someFunction('abc'); // calls someOtherFunction(byname.divabc)
你應該能夠與「eval」功能來做到這一點。
正如wybiral說,所有你需要的是EVAL:
someFunction(link) {
someOtherFunction(eval('(div' + link + ')');
}
基本上它是計算一個字符串作爲密碼的內容。很明顯,eval是一個危險的小工具,因爲它允許執行任意代碼,所以在使用時請注意。
對於這種變量名的動態構造/訪問你應該使用替代對象符號其中:
object.member === object["member"]
這種方式,您可以構建您的變量名作爲一個字符串,並用它在方括號內訪問對象成員。
eval
會做到這一點,但它通常表示當你想合成這樣的標識符的程序的其他問題。正如Ionut所說,最好使用[]
表示法。每當這樣的問題出現時,我喜歡鏈接到this。
試試這個:
var divFoo = "bar";
function someFunction(link) {
someOtherFunction(this['div' + link]);
}
function someOtherFunction(value) {
alert(value);
}
someFunction("Foo");
你能解釋一下背後的最內層設置括號的邏輯是什麼? – 2009-02-22 23:36:39