--description--
There is a special constructor
property located on the object instances duck
and beagle
that were created in the previous challenges:
let duck = new Bird();
let beagle = new Dog();
console.log(duck.constructor === Bird);
console.log(beagle.constructor === Dog);
Both of these console.log
calls would display true
in the console.
Note that the constructor
property is a reference to the constructor function that created the instance. The advantage of the constructor
property is that it's possible to check for this property to find out what kind of object it is. Here's an example of how this could be used:
function joinBirdFraternity(candidate) {
if (candidate.constructor === Bird) {
return true;
} else {
return false;
}
}
Note: Since the constructor
property can be overwritten (which will be covered in the next two challenges) it’s generally better to use the instanceof
method to check the type of an object.
--instructions--
Write a joinDogFraternity
function that takes a candidate
parameter and, using the constructor
property, return true
if the candidate is a Dog
, otherwise return false
.
--hints--
joinDogFraternity
should be defined as a function.
assert(typeof joinDogFraternity === 'function');
joinDogFraternity
should return true
if candidate
is an instance of Dog
.
assert(joinDogFraternity(new Dog('')) === true);
joinDogFraternity
should use the constructor
property.
assert(/\.constructor/.test(__helpers.removeJSComments(code)) && !/instanceof/.test(__helpers.removeJSComments(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;
}