Проверка свойства объекта

152
11 ноября 2019, 21:50
function User() {
    name: prompt("Your full name");
    regDate: new Date();
}
while (User.name != null) {
    arrUsers[i] = new User();
    ...
}

Как сделать так, чтобы при нажатии отмены в prompt цикл прекращался?

Answer 1

В данном коде смешались кони, люди.

Свойство name у функции всегда не null, а User в данном случае именно функция, а не объект. Следовательно проверка User.name != null всегда дает true и цикл становится бесконечным.

К самой функции тоже есть претензии: сейчас она делает совсем не то, что от нее ожидается.

В текущем виде внутри функции объявлены две метки.

Поэтому при использовании функции в качестве конструктора new User(); у полученного объекта вместо ожидаемых полей name и regDate не будет ничего.

Для создания полей их надо присваивать как свойства this, например

this.name = prompt("Your full name");

В данном случае лучше вообще вынести вызов prompt и конструктора, и передавать в конструктор непосредственно введенное имя.

В этом случае и проверка введенной строки тоже становится тривиальной, например:

function User(userName) {
    this.name = userName;
    this.regDate = new Date();
}
...
var userName;
while ((userName = prompt("Your full name")) != null) {
    arrUsers[i] = new User(userName);
    ...
}
READ ALSO
sequelize без ассоциации

sequelize без ассоциации

Подскажите пожалуйста

142
Как привязать autonumeric ко всем элементам

Как привязать autonumeric ко всем элементам

Не могу разобраться, autoNumeric работает только на первый элемент содержащий класс float, как сделать что бы сработало на всех элементах имеющих...

126