在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
他們的意思是不,你不能。 沒有辦法完成它。 因此有可能你能夠作這樣的事情 數組
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
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)
在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"]);
只是不知道一個糟糕的答案會獲得這麼多的選票。 答案很簡單,但您會使它變得複雜。 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);
這是一個例子:
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對象的屬性。