Домашнее задание по JavaScript 5. ООП

Задача №1

Написать функцию-конструктор для объекта-бегуна. Написать статический метод для награждения бегуна. При каждом награждении описание медали добавляется в статическую переменную класса, а id медали сохраняется в массиве medals объекта. При награждении медалью, которой нет в статической переменной, она создается и ей назначается id.

var Runner = function() {
  this.medals = [];
};
var runner1 = new Runner;
var runner2 = new Runner;

Runner.giveMedal(runner1, 'Gold, 1000 m');
Runner.giveMedal(runner1, 'Silver, 500 m');
Runner.giveMedal(runner1, 'Gold, 1000 m');
console.log(runner1.medals); // 1,2,1

Runner.giveMedal(runner2, 'Silver, 500 m');
Runner.giveMedal(runner2, 'Silver, 800 m');
console.log(runner2.medals); // 2,3

Задача №2

Написать функцию-конструктор Car, создающую объект-автомобиль заданной марки с 4 колесами . Добавить фабричные методы для добавления трёх- и восьмиколесных автомобилей.

>var Car = function(brand) {
  this.brand = brand;
  this.wheels = 4;
};

Задача №3

Написать функцию-конструктор, которая создает объект-бегуна с полями "имя" и "медали". Написать ещё одну функцию-конструктор, создающую объект-игрока в лотерею с полями "количество купленных билетов", "количество выигранных денег". Добавить игроку метод для выдачи ему денежного приза . Использовать данный метод для выдачи денежного приза бегуну, используя call.

Задача №4

Создать псевдо-массив Arr длинной 5, заполенный произвольными целыми числами от 10 до 99, и методом sort, сортирующим Arr по возрастанию остатков от деления на 10 его элеметов. С помощью одалживания метода sort отсортировать элементы по убыванию. Одалживать метод под тем же именем и на время одалживания сохранить имеющийся метод. После сортировки вернуть sort сохраненный метод.

Задача №5

Добавить декоратор для метода Math.max, который, в случае, если какие-то из элементов строки, заменял их на длину этих строк; если какие-то из элементов объекты - возвращает первое найденное числовое свойство или 0.

Math.max(
  1,
  2,
  'abc',
  {a: 2, b: 4}
); // 3

Указания по выполнению задания

Ссылка на полную версию этой страницы