07ObjectsFunctionalStyleHomeWork.md 3.0 KB

Домашнее задание: ООП в функциональном стиле.

  • Напишите конструктор класса Person со следующими параметрами: name, surname, fatherName, age, sex, salary, married, сохраняемыми в полях объекта.
  • Напишите конструктор класса Person с теми же параметрами, что и в предыдущей задаче. Поля должны хранится в замыкании. Для задания и чтения параметров напишите набор геттеров и сеттеров: getName, setName, getSurname, setSurname, getFatherName, setFatherName, getAge, setAge, getSex, setSex, getSalary, setSalary, getMarried, setMarried. Каждый из сеттер должен валидировать (проверять) данные. Если данные некорректны, данные внутри замыкания не изменяются. Сеттер всегда возвращает текущее значение переменной. См. пример
  • Напишите функцию makeCounter, которая определяет переменную counter и возвращает другую функцию, увеличивающую counter каждый вызов и возвращающую её значение:
   var counter   = makeCounter()
   var otherCntr = makeCounter()

   counter1() // 1
   counter1() // 2

   otherCntr() // 1
   otherCntr() // 2
   otherCntr() // 3

   counter1() // 3
  • Напишите код, который будет делать обратный ежесекундный отсчёт в консоли, используя console.log. Используйте Self Invoked Function для создания замыкания и setTimeout для задержки вывода. Результатом должно быть:
   5 //пауза 1 секунда
   4 //пауза 1 секунда
   3 //пауза 1 секунда
   2 //пауза 1 секунда
   1 //пауза 1 секунда
   поехали!
  • Напишите функцию makeProfileTimer, которая служит для замера времени выполнения другого кода и работает следующим образом:
   var timer = makeProfileTimer()
   doSomething(); //некий код, время выполнения которого мы хотим измерить с высокой точностью
   alert(timer()); //alert должен вывести время в микросекундах от выполнения makeProfileTimer до момента вызова timer(), т. е. измерить время выполнения doSomething
Используйте `performance.now()`