Files

86 lines
2.7 KiB
Markdown
Raw Permalink Normal View History

---
id: 587d7daf367417b2b2512b7e
title: Розуміння властивостей конструктора
challengeType: 1
forumTopicId: 301327
dashedName: understand-the-constructor-property
---
# --description--
Є особлива властивість `constructor`, що знаходиться в екземплярі об'єкта `duck` і `beagle`, які ми створили у попередніх завданнях:
```js
let duck = new Bird();
let beagle = new Dog();
console.log(duck.constructor === Bird);
console.log(beagle.constructor === Dog);
```
Обидва ці `console.log` виклики відображатимуться `true` у консолі.
Зверніть увагу, що властивість `constructor` є посиланням на функцію конструктора, що створила екземпляр. Перевага властивостей `constructor` полягає в тому, що можна перевірити цю функцію та визначити, який це об'єкт. Ось приклад того, як це можна використовувати:
```js
function joinBirdFraternity(candidate) {
if (candidate.constructor === Bird) {
return true;
} else {
return false;
}
}
```
**Примітка:** Через те, що властивості `constructor` можуть бути перезаписані (це буде показано у наступних двох завданнях), загалом, краще використовувати метод `instanceof` для перевірки типу об'єкта.
# --instructions--
Напишіть функцію `joinDogFraternity`, яка приймає параметр `candidate` та, використовуючи властивість `constructor`, перетворюється на `true`, за умови, що кандидат - це `Dog`, в іншому випадку - на `false`.
# --hints--
`joinDogFraternity` має бути визначено як функція.
```js
assert(typeof joinDogFraternity === 'function');
```
`joinDogFraternity` має перетворюватись на `true`, якщо `candidate` є екземпляром `Dog`.
```js
assert(joinDogFraternity(new Dog('')) === true);
```
`joinDogFraternity` повинно використовувати властивість `constructor`.
```js
assert(/\.constructor/.test(code) && !/instanceof/.test(code));
```
# --seed--
## --seed-contents--
```js
function Dog(name) {
this.name = name;
}
// Only change code below this line
function joinDogFraternity(candidate) {
}
```
# --solutions--
```js
function Dog(name) {
this.name = name;
}
function joinDogFraternity(candidate) {
return candidate.constructor === Dog;
}
```