2.0 KiB
2.0 KiB
id, title, challengeType, forumTopicId
id | title | challengeType | forumTopicId |
---|---|---|---|
587d7dae367417b2b2512b7b | Understand Own Properties | 1 | 301326 |
--description--
In the following example, the Bird
constructor defines two properties: name
and numLegs
:
function Bird(name) {
this.name = name;
this.numLegs = 2;
}
let duck = new Bird("Donald");
let canary = new Bird("Tweety");
name
and numLegs
are called own
properties, because they are defined directly on the instance object. That means that duck
and canary
each has its own separate copy of these properties. In fact every instance of Bird
will have its own copy of these properties. The following code adds all of the own
properties of duck
to the array ownProps
:
let ownProps = [];
for (let property in duck) {
if(duck.hasOwnProperty(property)) {
ownProps.push(property);
}
}
console.log(ownProps); // prints [ "name", "numLegs" ]
--instructions--
Add the own
properties of canary
to the array ownProps
.
--hints--
ownProps
should include the values "numLegs"
and "name"
.
assert(ownProps.indexOf('name') !== -1 && ownProps.indexOf('numLegs') !== -1);
You should solve this challenge without using the built in method Object.keys()
.
assert(!/Object(\.keys|\[(['"`])keys\2\])/.test(code));
You should solve this challenge without hardcoding the ownProps
array.
assert(
!/\[\s*(?:'|")(?:name|numLegs)|(?:push|concat)\(\s*(?:'|")(?:name|numLegs)/.test(
code
)
);
--seed--
--seed-contents--
function Bird(name) {
this.name = name;
this.numLegs = 2;
}
let canary = new Bird("Tweety");
let ownProps = [];
// Only change code below this line
--solutions--
function Bird(name) {
this.name = name;
this.numLegs = 2;
}
let canary = new Bird("Tweety");
function getOwnProps (obj) {
const props = [];
for (let prop in obj) {
if (obj.hasOwnProperty(prop)) {
props.push(prop);
}
}
return props;
}
const ownProps = getOwnProps(canary);