Задания
1) У нас уже есть рабочее приложение, состоящее из отдельных функций. Представьте, что перед вами стоит задача переписать его так, чтобы все функции стали методами объекта
personalMovieDB Такое случается в реальных продуктах при смене технологий или подхода к архитектуре программы
2) Создать метод
toggleVisibleMyDB, который при вызове будет проверять свойство
privat. Если оно
false - он переключает его в
true, если
true - переключает в
false. Протестировать вместе с
showMyDB.
3) В методе
writeYourGenres запретить пользователю нажать кнопку "
отмена" или оставлять пустую строку. Если он это сделал - возвращать его к этому же вопросу. После того, как все жанры введены - при помощи метода
forEach вывести в консоль сообщения в таком виде:
"Любимый жанр #(номер по порядку, начиная с 1) - это (название из массива)"
Решения
Всё, что нам нужно для решения первой задачи, это поместить имеющиеся у нас функции внутрь объекта
personalMovieDB, при этом необходимость во внешней переменной
numberOfFilms отпадает, так как внутри объекта мы устанавливаем значение
count равным 0 и работаем уже напрямую с ним при вызове функции
start Код
"use strict";
const personalMovieDB = {
count: 0,
movies: {},
actors: {},
genres: [],
privat: false,
start: function () {
personalMovieDB.count = +prompt(
"Сколько фильмов вы уже посмотрели?",
""
).trim();
while (
personalMovieDB.count == "" ||
personalMovieDB.count == null ||
isNaN(personalMovieDB.count)
) {
personalMovieDB.count = +prompt(
"Сколько фильмов вы уже посмотрели?",
""
).trim();
}
},
rememberMyFilms: function () {
for (let i = 0; i < 2; i++) {
let a = prompt(
"Один из последних просмотренных фильмов?",
""
).trim();
let b = +prompt("На сколько оцените его?", "").trim();
if (
a != "" &&
a != null &&
b != "" &&
b != null &&
a.length <= 50
) {
personalMovieDB.movies[a] = b;
} else {
i--;
}
}
},
detectPersonalLevel: function () {
if (personalMovieDB.count < 10) {
console.log("Просмотрено довольно мало фильмов");
} else if (personalMovieDB.count >= 10 && personalMovieDB.count <= 30) {
console.log("Вы классический зритель");
} else if (personalMovieDB.count > 30) {
console.log("Вы киноман");
} else {
console.log("Произошла ошибка");
}
},
writeYourGenres: function () {
for (let i = 1; i <= 3; i++) {
personalMovieDB.genres[i - 1] = prompt(
`Ваш любимый жанр под номером ${i}`
);
}
},
showMyDB: function (privat) {
if (!privat) {
console.log(personalMovieDB);
}
},
};
Решение второй задачи:
Код
toggleVisibleMyDB: function () {
if (personalMovieDB.privat) {
personalMovieDB.privat = false;
} else {
personalMovieDB.privat = true;
}
}
Решение третьей задачи:
Код
writeYourGenres: function () {
for (let i = 1; i <= 3; i++) {
let genre = prompt(`Ваш любимый жанр под номером ${i}`);
if (genre == "" || genre == null) {
console.log("Вы ввели некорректные данные или не ввели их вообще");
i--;
} else {
personalMovieDB.genres[i - 1] = genre;
}
}
personalMovieDB.genres.forEach((genre, i) => {
console.log(`Любимый жанр ${i + 1} - это ${genre}`);
});
}
Всего комментариев: 1