получить имя переменной от пользователя в javascript - PullRequest
0 голосов
/ 13 марта 2020

У меня есть объект с именем "car":

function car(name) {
    this.name = name;
    this.position= 0;
}

Я получаю количество автомобилей от пользователя:

let nubmerOfCars = +prompt("Input Number of Casr")

и создаю автомобили по числу, указанному с именем этот пользователь вводил для каждого конца, pu sh машин в массив:

for (i = 0; i < nubmerOfCars; i++) { 
    let nameCar = prompt("Input name of car no." + `${i+1}` + ":");
    let temp = new car(nameCar);
    temp.name = nameCar;
    nameCar=temp;
    carsArray.push(nameCar);
    carsArray.push(temp);
}
// user entered a,b,c for cars name
carsArray=[car{name:a},car{name:b},car{name:c}] // for 3 cars

, но, я хочу для каждой машины, создать переменную с введенным пользователем именем, например:

function car() { //remove names's key
        this.position= po;
    }
//user entered a,b,c for cars name
    let a = new car{...};
    let b = new car{...};
    let c = new car{...};

действительно я хочу создать переменные, которые пользователь ввел имена, я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

Нет прямого способа добавить переменные с именем javascript в локальную область. Но обычно глобальная область видимости существует как экземпляр объекта, и это можно изменить. Как window на сайте клиента JS:

// set variable x using the window object
window.x = "This is the value of x";
// accessing window.x only writing x
alert(x); // will alert: This is the value of x

// use string to define a variable name
window["y"] = "test";
// accessing...
alert(y); // will alert: test

// using other variable to define variable name
window[y] = 123;
// accessing...
alert(test): // will alert: 123

0 голосов
/ 13 марта 2020

Вы не можете создавать имена переменных таким образом, обходным путем может быть создание объекта:

let carsArray=[{name:"a"},{name:"b"},{name:"c"}]

let carObj = {};

carsArray.forEach((car) => {
  carObj[car.name]=car
});

console.log(carObj)
...