2012-04-30 209 views
0

我正嘗試使用字符串更新nodejs中變量的內容。 在客戶端JavaScript中,這是使用window [variable]完成的,但是因爲nodejs中沒有「窗口」。我嘗試使用「this」和「module」,但是所有即時消息都是空對象。需要幫助的感謝NodeJS將字符串轉換爲變量

代碼段:

var myVariable = 'Hello'; 
var exchangeVariable = 'myVariable'; 

this[exchangeVariable] = 'Hello World'; 

/* 
    myVariable should equal to 'Hello World!' 
*/ 

謝謝!

+1

以這種方式訪問​​變量的目的是什麼? – Jack

回答

8

這裏的一些背景之前,我直接回答你的問題:

在JavaScript中,對象既可以使用點號(someObj.property)或它們編索引收錄,你在你的例子做(someObj["property"]

在瀏覽器中,window是瀏覽器評估您的代碼的全局上下文。節點使用variable called global

所以,如果你想引用變量您全局定義:

> var someGlobalVar = "hi"; 
> var myLookupKey = "someGlobalVar"; 
> global[myLookupKey] 
'hi' 

然而,這通常被認爲是非常不好的做法(在節點和瀏覽器)。這有很多原因,但我只關注一個:

在節點中,模塊(每個require d文件)應被視爲不共享全局狀態(並且在某些情況下,它們不能共享狀態)。如果您試圖跨文件共享狀態,我鼓勵您閱讀節點文檔的modules section

+0

奇怪的是,這個答案被否決......它LGTM,至少保持在0.我只是爲了「觸手的日子」頭像而投票) – ixe013

+0

當有人認出它時,它總是讓我微笑: ) – Nevir

0

您可以創建自己的變量散列或數組,並自己分配變量。

var myVariable = "Hello"; 
var varArray = new Array() 
    varArray["exchangeVariable"] = myVariable; 
+0

爲什麼是「數組」?空白對象會更適用於此用途。你沒有利用Array的任何行爲 – Nevir

+0

我說hash或array,我不知道他的用例。我只是選擇編寫一個數組作爲例子。 – Jack