2.0 KiB
id, title, challengeType, forumTopicId, dashedName
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
587d7daf367417b2b2512b7e | Entiende la propiedad constructor | 1 | 301327 | understand-the-constructor-property |
--description--
Hay una propiedad especial constructor
ubicada en instancias de objeto duck
y beagle
que fueron creados en desafíos anteriores:
let duck = new Bird();
let beagle = new Dog();
console.log(duck.constructor === Bird);
console.log(beagle.constructor === Dog);
Ambas llamadas console.log
devolverían true
en la consola.
Ten en cuenta que la propiedad constructor
hace referencia a la función constructor que creo la instancia. La ventaja de la propiedad constructor
es que es posible verificar esta propiedad para averiguar qué tipo de objeto es. Así es como se podría utilizar:
function joinBirdFraternity(candidate) {
if (candidate.constructor === Bird) {
return true;
} else {
return false;
}
}
Nota: dado que la propiedad constructor
se puede sobreescribir (se verá en los próximos dos desafíos), por lo general, es mejor utilizar el método instanceof
para verificar el tipo de un objeto.
--instructions--
Escribe una función joinDogFraternity
que tome como parámetro candidate
y que con la propiedad constructor
, devuelva true
si el candidato es un Dog
y si no lo es debería devolver false
.
--hints--
joinDogFraternity
debe definirse como una función.
assert(typeof joinDogFraternity === 'function');
joinDogFraternity
debe devolver true
si candidate
es una instancia de Dog
.
assert(joinDogFraternity(new Dog('')) === true);
joinDogFraternity
debe utilizar la propiedad 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;
}