3.9 KiB
id, title, challengeType, forumTopicId, dashedName
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
587d7dae367417b2b2512b79 | Розширити конструктори для отримання аргументів | 1 | 18235 | extend-constructors-to-receive-arguments |
--description--
Конструктори Bird
та Dog
з останнього завдання працювали добре. Однак зверніть увагу, що всі Birds
, створені за допомогою конструктора Bird
, автоматично називаються Альбертом, мають синій колір і мають дві ніжки. Що робити, якщо вам потрібні birds з різними значеннями для назви та кольору? Змінити властивості кожної bird можна вручну, але це займе багато часу:
let swan = new Bird();
swan.name = "Carlos";
swan.color = "white";
Припустимо, ви писали програму для відстеження сотень чи навіть тисяч різних bird у вольєрі. Це займе багато часу, щоб створити всі birds, а потім змінити для кожного властивості на різні значення. Щоб легше створювати різні об'єкти Bird
, ви можете спроектувати свій конструктор Bird для прийняття параметрів:
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
має такі властивості:
cardinal.name
cardinal.color
cardinal.numLegs
Конструктор є більш гнучким. Тепер можна визначити властивості для кожної Bird
під час її створення, що є одним із способів, яким конструктори JavaScript так корисні. Вони поєднують об’єкти разом на основі спільних характеристик та поведінки та визначають план, який автоматизує створення.
--instructions--
Створіть ще один конструктор Dog
. Цього разу встановіть його так щоб прийняти параметри name
та color
і встановіть властивість numLegs
на 4. Потім створіть новий Dog
, збережений у змінній terrier
. Передайте два рядки в якості аргументів для властивостей name
and 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();