Практика , ч4. Используем объекты

Задания


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

Алексей 05.07.2025 в 09:12 / Материал
Альтернативный вариант решения третьей задачи:

Код
writeYourGenres: function () {
   for (let i = 1; i < 2; i++) {
   let yourGenres = prompt("Введите ваши любимые жанры через запятую");

   if (yourGenres == "" || yourGenres == null) {
   console.log(
   "Вы ввели некорректные данные или не ввели их вообще"
   );
   i--;
   } else {
   personalMovieDB.genres = yourGenres.split(', ');
   }
   }

   personalMovieDB.genres.forEach((genre, i) => {
   console.log(`Любимый жанр ${i + 1} - это ${genre}`);
   });
}
0
Имя *:
Email *:
Код *:
Хостинг от uCoz