Ниже будет встречаться тестовый код, который, будучи запущен после выполненной части задания должен корректно отработать, т. е. без синтаксических ошибок и с ожидаемыми результатами. Если вы во вкладке с заданиями откроете Developer Tools и вставите туда свой код, то для проверки достаточно сделать "click here to run code" и посмотреть на результаты
Расширьте функцию-конструктор Person
следующими полями и возможностями:
age
Добавьте поле age
в параметры конструктора
var agedPerson1 = new Person("Ivan", "Ivanovv", 45)
agedPerson1.age // => 45
var agedPerson2 = new Person("Barak", "Kennedy", 15)
agedPerson2.age // => 15
hasPassport
Добавьте функцию-метод (т. е. функцию объекта), которая возвращает, есть ли паспорт у персоны, отталкиваясь от возраста.
var agedPerson1 = new Person("Ivan", "Ivanovv", 45)
agedPerson1.hasPassport(); // true
var agedPerson2 = new Person("Barak", "Kennedy", 15)
agedPerson2.hasPassport(); // false
Создайте функцию-конструктор PhoneNumber
, с двумя параметрами:
number
- строка с номером телефонаtype
- тип номера, один из трех вариантов: home
, office
, mobile
var policeNumber = new PhoneNumber("+380577102", "office")
policeNumber // => PhoneNumber{number: "+380577102", type: "office"}
var medNumber = new PhoneNumber("+380577103", "mobile")
medNumber // => PhoneNumber{number: "+380577103", type: "mobile"}
addNumber
Создайте функцию-метод, которая будет добавлять номер телефона (объект PhoneNumber
) во внутренний массив phones
объекта Person. Делайте проверку на повтор и не добавляйте
номер, если он уже присутствует в массиве phones
var agedPerson1 = new Person("Ivan", "Ivanovv", 45)
var phoneNum = new PhoneNumber("+380671234567", "mobile")
agedPerson1.addNumber(new PhoneNumber("+380577123456", "home"))
agedPerson1.addNumber(phoneNum)
agedPerson1.addNumber(phoneNum) // добавить не должно, должна сработать проверка на повтор
getNumbers
Создайте функцию-метод, которая будет возвращать список номеров (массив phones
)
agedPerson1.getNumbers() // массив с двумя объектами PhoneNumber после предыдущего тестового кода
addOwner
Создайте функцию-метод, которая будет добавлять владельца номера телефона (объект Person
) во внутренний массив owners
объекта PhoneNumber. Не позволяйте
дублировать владельца. Так же не позволяйте добавлять более одного владельца для мобильных номеров, это разрешено только для офисных и домашних номеров
телефонов (type
"office" и "home")
var policeNumber = new PhoneNumber("+380577102", "office")
var medNumber = new PhoneNumber("+380577103", "mobile")
var agedPerson1 = new Person("Ivan", "Ivanovv", 45)
var agedPerson2 = new Person("Barak", "Kennedy", 15)
policeNumber.addOwner(agedPerson1)
policeNumber.addOwner(agedPerson2)
medNumber.addOwner(agedPerson1)
medNumber.addOwner(agedPerson2) // не должно добавить, так как medNumber - мобильный номер, относящийся только к одному владельцу
getOwners
Создайте функцию-метод, которая будет возвращать список владельцев (массив owners
). Для мобильных номеров возвращайте не массив с одним элементом,
а напрямую единственного владельца.
medNumber.getOwners() // => один объект Person
policeNumber.getOwners() // => массив объектов-владельцев номера
Обеспечьте двойную связность номеров и людей: при добавлении номера к человеку, в номер должна заносится связь с человеком. И наоборот, при добавлении человека как владельца номера, к персоне должна добавляться связь с номером.
var newPerson = new Person("Lee", "See-Tsyn", 35)
var newNumber = new PhoneNumber("+380667654321", "mobile")
newNumber.addOwner(newPerson)
newPerson.getNumbers() // => массив из одного номера телефона, который хранится в newNumber
var anotherNumber = new PhoneNumber("+380681231231", "mobile")
newPerson.addNumber(anotherNumber)
anotherNumber.getOwners() // => newPerson