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