3.9 KiB
id, title, challengeType, forumTopicId, dashedName
| id | title | challengeType | forumTopicId | dashedName |
|---|---|---|---|---|
| 587d7dae367417b2b2512b79 | Розширення конструкторів для отримання аргументів | 1 | 18235 | extend-constructors-to-receive-arguments |
--description--
Конструктори Bird та Dog з останнього завдання працювали добре. Однак зверніть увагу, що всі пташки, створені за допомогою конструктора Bird, автоматично називаються Альбертом, мають синій колір і мають дві ніжки. Що робити, якщо потрібні пташки з різними значеннями назви та кольору? Змінити властивості кожної пташки можна вручну, але це займе багато часу:
let swan = new Bird();
swan.name = "Carlos";
swan.color = "white";
Припустимо, ви писали програму для відстеження сотень чи навіть тисяч різних пташок у пташнику. Створення всіх пташок займе багато часу, а потім ще потрібно змінити значення властивостей. Щоб легше створювати різні об’єкти Bird, ви можете спроєктувати конструктор для прийняття параметрів:
function Bird(name, color) {
this.name = name;
this.color = color;
this.numLegs = 2;
}
Потім передайте значення як аргументи, щоб визначити кожну унікальну пташку в конструкторі Bird: let cardinal = new Bird("Bruce", "red");. Ви отримаєте новий екземпляр Bird із властивостями name та color з відповідними значеннями Bruce та red. Властивість numLegs досі має значення 2. cardinal має такі властивості:
cardinal.name
cardinal.color
cardinal.numLegs
Конструктор є більш гнучким. Тепер можна визначити властивості для кожної пташки під час її створення, що є однією з причин, чому конструктори JavaScript такі корисні. Вони групують об’єкти на основі спільних характеристик і поведінки та визначають план, який автоматизує їхнє створення.
--instructions--
Створіть ще один конструктор Dog. Цього разу налаштуйте його так, щоб він приймав параметри name та color, і встановіть властивість numLegs на 4. Потім створіть новий Dog, збережений у змінній terrier. Передайте два рядки як аргументи до властивостей name та color.
--hints--
Dog має отримати аргумент для name.
assert(new Dog('Clifford').name === 'Clifford');
Dog має отримати аргумент для color.
assert(new Dog('Clifford', 'yellow').color === 'yellow');
Dog повинен мати властивість numLegs зі значенням 4.
assert(new Dog('Clifford').numLegs === 4);
Створіть terrier за допомогою конструктора Dog.
assert(terrier instanceof Dog);
--seed--
--seed-contents--
function Dog() {
}
--solutions--
function Dog (name, color) {
this.numLegs = 4;
this.name = name;
this.color = color;
}
const terrier = new Dog();