|
@@ -1,13 +1,13 @@
|
|
|
# Домашнее задание: ООП в функциональном стиле.
|
|
|
|
|
|
-0. Напишите конструктор класса `Person` со следующими параметрами:
|
|
|
+- Напишите конструктор класса `Person` со следующими параметрами:
|
|
|
`name`, `surname`, `fatherName`, `age`, `sex`, `salary`, `married`, сохраняемыми в полях объекта.
|
|
|
-1. Напишите конструктор класса `Person` с теми же параметрами, что и в предыдущей задаче. Поля должны хранится в *замыкании*. Для задания и чтения
|
|
|
+- Напишите конструктор класса `Person` с теми же параметрами, что и в предыдущей задаче. Поля должны хранится в *замыкании*. Для задания и чтения
|
|
|
параметров напишите набор *геттеров и сеттеров*: `getName`, `setName`, `getSurname`, `setSurname`, `getFatherName`, `setFatherName`, `getAge`,
|
|
|
`setAge`, `getSex`, `setSex`, `getSalary`, `setSalary`, `getMarried`, `setMarried`. Каждый из сеттер должен *валидировать*
|
|
|
(проверять) данные. Если данные некорректны, данные внутри замыкания не изменяются.
|
|
|
**Сеттер** всегда возвращает *текущее* значение переменной. См. [пример](http://gitlab.a-level.com.ua/gitgod/FrontendLectures/src/master/07ObjectsFunctionalStyle.md#--)
|
|
|
-2. Напишите функцию `makeCounter`, которая определяет переменную `counter` и возвращает другую функцию, увеличивающую `counter` каждый вызов и возвращающую её значение:
|
|
|
+- Напишите функцию `makeCounter`, которая определяет переменную `counter` и возвращает другую функцию, увеличивающую `counter` каждый вызов и возвращающую её значение:
|
|
|
|
|
|
```javascript
|
|
|
var counter = makeCounter()
|
|
@@ -22,20 +22,25 @@
|
|
|
|
|
|
counter1() // 3
|
|
|
```
|
|
|
-2. Напишите код, который будет делать обратный ежесекундный отсчёт в консоли, используя `console.log`. Используйте **Self Invoked Function** для создания замыкания и
|
|
|
+- Напишите код, который будет делать обратный ежесекундный отсчёт в консоли, используя `console.log`. Используйте **Self Invoked Function** для создания замыкания и
|
|
|
`setTimeout` для задержки вывода. Результатом должно быть:
|
|
|
- ```
|
|
|
+
|
|
|
+```javascript
|
|
|
5 //пауза 1 секунда
|
|
|
4 //пауза 1 секунда
|
|
|
3 //пауза 1 секунда
|
|
|
2 //пауза 1 секунда
|
|
|
1 //пауза 1 секунда
|
|
|
поехали!
|
|
|
- ```
|
|
|
-3. Напишите функцию `makeProfileTimer`, которая служит для замера времени выполнения другого кода и работает следующим образом:
|
|
|
+```
|
|
|
|
|
|
- ```javascript
|
|
|
+- Напишите функцию `makeProfileTimer`, которая служит для замера времени выполнения другого кода и работает следующим образом:
|
|
|
+
|
|
|
+```javascript
|
|
|
var timer = makeProfileTimer()
|
|
|
- doSomething(); //некий код, время выполнения которого мы хотим замерить с высокой точностью
|
|
|
- alert(timer()); //alert должен вывести время в микросекундах от выполнения makeProfileTimer до момента вызова timer(), т. е. замерить время выполнения doSomething
|
|
|
- ```
|
|
|
+ doSomething(); //некий код, время выполнения которого мы хотим измерить с высокой точностью
|
|
|
+ alert(timer()); //alert должен вывести время в микросекундах от выполнения makeProfileTimer до момента вызова timer(), т. е. измерить время выполнения doSomething
|
|
|
+```
|
|
|
+ Используйте `performance.now()`
|
|
|
+
|
|
|
+-
|