2012-04-30 4 views
0

Я пытаюсь обновить содержимое переменной в nodejs с помощью строки. На стороне клиента javascript это было сделано с использованием окна [variable], так как в nodejs нет «окна». Я пробовал использовать «этот» и «модуль», однако все im получение - пустой объект. нужна помощь благодаря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

Я сказал хэш или массив, я не знаю его использования. Я просто решил написать массив в качестве примера. – Jack

Смежные вопросы