Merge pull request #13129 from Greenheart/fix/oop-constructor-property
fix(challenge): Stricter tests for "OOP: Constructor property"
This commit is contained in:
commit
019c7a9294
@ -432,12 +432,12 @@
|
||||
"description": [
|
||||
"There is a special <code>constructor</code> property located on the object instances <code>duck</code> and <code>beagle</code> that were created in the previous challenges:",
|
||||
"<blockquote>let duck = new Bird();<br>let beagle = new Dog();<br><br>console.log(duck.constructor === Bird); //prints true<br>console.log(beagle.constructor === Dog); //prints true</blockquote>",
|
||||
"Note that the <code>constructor</code> property is the name of the constructor function that created the instance.",
|
||||
"Note that the <code>constructor</code> property is a reference to the constructor function that created the instance.",
|
||||
"The advantage of the <code>constructor</code> 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:",
|
||||
"<blockquote>function joinBirdFraternity(candidate) {<br> if (candidate.constructor === Bird) {<br> return true;<br> } else {<br> return false;<br> }<br>}</blockquote>",
|
||||
"<strong>Note</strong><br>Since the <code>constructor</code> property can be overwritten (which will be covered in the next two challenges) it’s generally better to use the <code>instanceof</code> method to check the type of an object.",
|
||||
"<hr>",
|
||||
"Write a <code>joinDogFraternity</code> function that takes a <code>candidate</code> parameter and returns <code>true</code> if the candidate is a <code>Dog</code> and returns <code>false</code> otherwise."
|
||||
"Write a <code>joinDogFraternity</code> function that takes a <code>candidate</code> parameter and, using the <code>constructor</code> property, return <code>true</code> if the candidate is a <code>Dog</code>, otherwise return <code>false</code>."
|
||||
],
|
||||
"challengeSeed": [
|
||||
"function Dog(name) {",
|
||||
@ -452,7 +452,8 @@
|
||||
],
|
||||
"tests": [
|
||||
"assert(typeof(joinDogFraternity) === 'function', 'message: <code>joinDogFraternity</code> should be defined as a function.');",
|
||||
"assert(joinDogFraternity(new Dog(\"\")) === true, 'message: <code>joinDogFraternity</code> should return true if<code>candidate</code> is an instance of <code>Dog</code>.');"
|
||||
"assert(joinDogFraternity(new Dog(\"\")) === true, 'message: <code>joinDogFraternity</code> should return true if<code>candidate</code> is an instance of <code>Dog</code>.');",
|
||||
"assert(/\\.constructor/.test(code) && !/instanceof/.test(code), 'message: <code>joinDogFraternity</code> should use the <code>constructor</code> property.');"
|
||||
],
|
||||
"solutions": [
|
||||
"function Dog(name) {\n this.name = name;\n}\nfunction joinDogFraternity(candidate) {\n return candidate.constructor === Dog;\n}"
|
||||
|
Loading…
x
Reference in New Issue
Block a user