Создать экземпляр объекта с помощью функции (динамически), по событиям триггеров - PullRequest
0 голосов
/ 31 мая 2019

Я хочу создать экземпляр пользовательского объекта, содержащий имя, возраст и т. Д.Я только что дал форму, которую должен заполнить пользователь, и с этими подробностями я хочу создать его экземпляр объекта динамически (с собственным именем этого человека, т.е. пользователем).Для этого я использовал функцию, как показано ниже, но я сталкиваюсь с этой ошибкой.Заранее спасибо за помощь

class MainUser{
  constructor(name,age){
    this.name=name;
    this.age=age;
  }
}
function createUser(user, name, age){
  let user = new MainUser(name, age);
}

Я получаю эту ошибку Uncaught SyntaxError: Идентификатор 'user' уже объявлен

1 Ответ

1 голос
/ 31 мая 2019

У вас есть переменная user в качестве параметра в определении функции createUser, и с помощью let user вы пытаетесь повторно объявить этот параметр / переменную. У вас есть три варианта в зависимости от того, чего вы пытаетесь достичь.

  1. переименуйте user -параметр функции
  2. переименуйте переменную user для вашего объекта внутри функции
  3. удалить let, чтобы использовать параметр функции

class User {
  constructor(name, age){
    this.name=name;
    this.age=age;
  }
}

let user = null;
function createUser(name, age){
  user = new User(name, age);
}
createUser('Alice', 32);

console.log(user);

Другой подход, который вы можете использовать:

class User {
  constructor(name, age){
    this.name=name;
    this.age=age;
  }
}

function createUser(name, age){
  let userObject = new User(name, age); 
  return userObject;
}
let user = createUser('Bob', 31);

console.log(user);

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

class User {
  constructor(name, age){
    this.name=name;
    this.age=age;
  }
}

function createUser(user, name, age){
  this[user] = new User(name, age);
  console.log(this[user]);
  console.log(test_user);
}
createUser('test_user', 'Charly', 42);
...