Попытка создать свойства в классе, а затем установить их значение

#javascript

#javascript

Вопрос:

Я думал, что все понял правильно, но ошибка гласит:

Неудачные тесты:

Должен быть класс со свойствами name, email и password. Ожидается, что undefined будет ‘Dan’.

Я посмотрел на MDN и w3schools, но, по-видимому, я просто не понимаю этого. Я знаю, что я близок к этому.

 function ClassOne(name, pw, mail){
   /*Exercise One: In this exercise, you will be creating your own class!
   You are currently in the class, you are given three strings, name, pw, and mail.
   You need to create three properties on this class.
   Those properties are: 'username', 'password', and 'email'
   Set the value of username to name,
   Set the value of password to pw,
   Set the value of email to mail */
    }
  function User(username, password, email) {
      this.username = 'name';                 //<-------My Code
      this.password = 'pw';                   //<-------My Code
      this.email = 'mail';                    //<-------My Code
  }
 const dan = new User ('Dan', '123xyz', 'dan@aol.com');          //<-------My Code
  

Комментарии:

1. Тест, похоже, противоречит /* Exercise One:*/ комментарию. В частности, в комментарии говорится создать свойство с именем, username но тест завершается неудачей, потому что name свойства нет?

2. Кроме того, тот, кто придумал это упражнение, на самом деле не понимает JavaScript, поскольку не существует другого класса, кроме ключевого слова, которое представляет функцию конструктора, подобную той, которую вы написали.

3. Expected undefined to be 'Dan'. <br> Это сильно подразумевает, что он проверяет не там, где вы думаете, что он проверяет. <br><br> Приведенный вами пример должен привести к ошибке Expected 'name' to be 'Dan'. <br> потому что это то, что вы задаете username в своем конструкторе. <br> <br> я предполагаю, что ваш const dan экземпляр находится не там, где вы должны хранить. <br> может быть, вам нужно вернуть dan ? <br> Код, опубликованный Томом К., должен работать.

Ответ №1:

Вам нужно установить свойства, равные аргументам, которые вы передаете в конструктор. Прямо сейчас вы передаете значения конструктору, но не используете их. Оказавшись внутри конструктора, вы устанавливаете значения своих свойств в литеральные строки. Попробуйте вот так:

 function ClassOne(username, password, email) {
  this.username = username;
  this.password = password;
  this.email = email;
}
const dan = new ClassOne('Dan', '123xyz', 'dan@aol.com');

console.log(dan);  

Комментарии:

1. Да, я сделал это таким образом и все еще выдает те же ошибки. Не могу использовать класс и конструктор до следующего урока. Они хотят, чтобы все было так, как мы с вами написали. Это упражнение немного сбивает с толку.

2. После повторного прочтения комментариев в опубликованном вами коде я думаю, проблема в том, что имя класса, как ожидается, будет ClassOne . Я нигде не вижу в инструкциях указания создать новый класс с именем User (хотя это имело бы смысл). Я обновил свой код — попробуйте.

3. Да, это сделал ClassOne. Спасибо, Том!

Ответ №2:

   this.username = name;
  this.password = pw;
  this.email = mail;
  

Это все, что вам нужно для решения.

Комментарии:

1. Вы захотите объяснить немного больше, чтобы ваш ответ был более надежным.