在JavaScript中使用動態變量名稱

在PHP中,您能夠執行如下使人驚奇/可怕的事情: javascript

$a = 1;
$b = 2;
$c = 3;
$name = 'a';
echo $$name;
// prints 1

有沒有辦法用Java作相似的事情? java

例如,若是我有一個var name = 'the name of the variable'; 如何得到名稱爲name的變量的引用? node


#1樓

他們的意思是不,你不能。 沒有辦法完成它。 因此有可能你能夠作這樣的事情 數組

function create(obj, const){
// where obj is an object and const is a variable name
function const () {}

const.prototype.myProperty = property_value;
// .. more prototype

return new const();

}

具備與ECMAScript 5中實現的功能相同的建立功能。 app


#2樓

eval()在個人測試中不起做用。 可是能夠向DOM樹添加新的JavaScript代碼。 所以,這是一個添加新變量的函數: 函數

function createVariable(varName,varContent)
{
  var scriptStr = "var "+varName+"= \""+varContent+"\""

  var node_scriptCode = document.createTextNode( scriptStr )
  var node_script = document.createElement("script");
  node_script.type = "text/javascript"
  node_script.appendChild(node_scriptCode);

  var node_head = document.getElementsByTagName("head")[0]
  node_head.appendChild(node_script);
}

createVariable("dynamicVar", "some content")
console.log(dynamicVar)

#3樓

在Javascript中,您可使用全部屬性都是鍵值對的事實。 jAndy已經提到了這一點,可是我不認爲他的回答代表瞭如何利用它。 測試

一般,您不是試圖建立一個變量來保存變量名,而是試圖生成變量名而後使用它們。 PHP使用$$var表示法來作到這一點,可是Javascript不須要這樣作,由於屬性鍵能夠與數組鍵互換。 this

var id = "abc";
var mine = {};
mine[id] = 123;
console.log(mine.abc);

給出123。一般您要構造變量,這就是爲何存在間接的緣由,所以您也能夠採用其餘方法。 spa

var mine = {};
mine.abc = 123;
console.log(mine["a"+"bc"]);

#4樓

只是不知道一個糟糕的答案會獲得這麼多的選票。 答案很簡單,但您會使它變得複雜。 prototype

// If you want to get article_count
// var article_count = 1000;
var type = 'article';
this[type+'_count'] = 1000;  // in a function we use "this";
alert(article_count);

#5樓

這是一個例子:

for(var i=0; i<=3; i++) {
    window['p'+i] = "hello " + i;
}

alert(p0); // hello 0
alert(p1); // hello 1
alert(p2); // hello 2
alert(p3); // hello 3

另外一個例子 :

var myVariable = 'coco';
window[myVariable] = 'riko';

alert(coco); // display : riko

所以, myVariable的值「 coco 」成爲變量coco

由於全局做用域中的全部變量都是Window對象的屬性。

相關文章
相關標籤/搜索