Files
freeCodeCamp/curriculum/challenges/ukrainian/02-javascript-algorithms-and-data-structures/object-oriented-programming/extend-constructors-to-receive-arguments.md

90 lines
3.9 KiB
Markdown
Raw Normal View History

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