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
каждый вызов и возвращающую её значение:
```javascript
var counter = makeCounter()
var otherCntr = makeCounter()counter1() // 1 counter1() // 2
otherCntr() // 1 otherCntr() // 2 otherCntr() // 3
counter1() // 3
2. Напишите код, который будет делать обратный ежесекундный отсчёт в консоли, используя `console.log`. Используйте **Self Invoked Function** для создания замыкания и
`setTimeout` для задержки вывода. Результатом должно быть:
5 //пауза 1 секунда 4 //пауза 1 секунда 3 //пауза 1 секунда 2 //пауза 1 секунда 1 //пауза 1 секунда поехали!
3. Напишите функцию `makeProfileTimer`, которая служит для замера времени выполнения другого кода и работает следующим образом:
```javascript
var timer = makeProfileTimer()
doSomething(); //некий код, время выполнения которого мы хотим замерить с высокой точностью
alert(timer()); //alert должен вывести время в микросекундах от выполнения makeProfileTimer до момента вызова timer(), т. е. замерить время выполнения doSomething