Определение имени переменной javascript из переменной
Привет, возможно ли установить имя var
из другой переменной?
Например, у меня есть var test
с разными номерами каждый раз, когда вызывается функция, поэтому я хочу, чтобы число было именем переменной, например. var test содержит '1', поэтому новая переменная будет var 1
. Затем я хочу добавить слово к этому номеру "word", чтобы новая переменная стала var 1word
.
var newNumber = 1;
var newNumber += 'word';
^ becomes ' 1 '
the new var name becomes ' 1word '
изменить:
function getNumber(newNumber) // Gets a number, for this example say its the number '1'
{
var newNumber += "something"; //The new varaible will be named "1something" (something can be any word)
}
Надеюсь, я не сделал это слишком запутанным, спасибо.
Ответы
Ответ 1
Вы можете поместить переменные в объект и проиндексировать объект с помощью строковых ключей.
Например:
var myData = { };
myData.x1 = 42;
alert(myData["x" + 1]);
Вы также можете инициализировать объект с помощью объектной нотации:
var myData = { key: 42 };
Ответ 2
Все в Javascript в основном просто ассоциативный массив. Это означает, что вы можете использовать обозначение доступа к массиву и точечную нотацию более или менее взаимозаменяемо. Нотация доступа к массиву предоставляет функцию, которую вы ищете:
object["name"]="foo"
задает свойство имени для данного объекта.
Если вы хотите создать глобальную переменную, используйте объект window
window["name"]="foo"
Вы также можете использовать выражение или переменную в квадратных скобках
window[someVaribale]="foo";
window["name_" + someVariable]="foo";
Ответ 3
Насколько я понимаю, вы хотите создать переменную, назвавшуюся после содержимого другой переменной.
Не уверен, что вы можете сделать это напрямую, но вы можете сделать это безболезненно, используя объекты.
var obj = new Object();
obj['original'] = 'name';
obj[obj]['original']] = 'another name';
Теперь объект имеет следующую структуру:
{
'original': "name",
'name': "another name" #variable named after original contents
}
Ответ 4
Есть простой способ достичь этого, если вы храните все свои переменные внутри объекта/массива. Помните, что в javascript массивы - это объекты, объекты - объекты и т.д.: p
var mystuff = {}; // new object literal
var numVariables = 10;
for (var i = numVariables - 1; i >= 0; i--){
var newkey = i + "_my_index";
mystuff[newkey] = "some stuff";
}
Ответ 5
Если вы используете числовые "переменные", например, в вашем примере (var 1; var 2;)
вы должны использовать Array;
var list=[]; //declaration
list[1]="something"; //create a "variable" 1 with 'something' inside
list[2]="other thing"; //create another variable
var name=3;
var value="Hello";
list[name]=value; //works too
alert( list[1] ); //something
Если вы используете слова как "ключевые слова", вы должны использовать объекты вместо массивов
var list={}; //declaration
list["car1"]="Honda";
list["car2"]="Toyota";
list["fuit"]="Apple";
var name="greeting";
var value="Hello";
list[name]=value; //works too
alert( list["car2"] ); //Toyota
надеюсь, что вы поняли.
Ответ 6
Нам нужно больше объяснять, что вы пытаетесь выполнить. Это похоже на действительно плохую идею. Скорее всего, вы действительно должны просто использовать именованный массив индексов. Например.
var stuff = {}
stuff[1] = "one";
stuff["name"] = "david";
Ответ 7
Я смущен вашим вопросом, но кажется, что вы хотите изменить имя переменной, которое невозможно сделать. Вы можете создать новую переменную с нужным именем и присвоить ей любое значение, которое вы хотите.
Мой вопрос: почему вы хотите это сделать?
Ответ 8
Вы можете добиться этого с помощью встроенного метода:
eval ( "ваш код javascript здесь" );
поэтому, возможно, в вашем случае это будет что-то вроде:
eval ( "var yourNewName = \" "+ yourOldVarValue +" \"");
затем смените старую переменную.
Но, как выражаются другие, я не могу понять, почему или в каком случае вы хотели бы переименовать переменную (если только это не было для какой-то странной хакерской хитрости).
[не проверен, поэтому этот eval может даже не работать: S]