Tell us what’s happening:
Describe your issue in detail here.
Hi,
I am getting frustrated by not getting the logic behind this piece of code.
Besides the fact that i do understand the meaning, can someone have a specific piece of code on this application ?
I am struggling in finding the correct use to it.
Thanks,
**Your code so far**
function checkObj(obj, checkProp) {
if (obj.hasOwnProperty(checkProp)) {
return obj[checkProp];
} else {
return "Not Found";
}
}
// Only change code above this line
**Your browser information:**
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36
Challenge: Basic JavaScript - Testing Objects for Properties
The JS engine searches in the prototype of the object if the property isn’t there. So you could mistakenly test for a property.
Take this example
a = { toString: "important property" }
b = { }
b.hasOwnProperty(toString) //false
b.toString ? true : false // true
the last line is true, because b is inheriting a method from “Object” called “toString”. You could just remember the prototype which is inherited from “Object”.
But what when there are several layers of Objects?
For example
let hund = new Dog()
We don’t know which properties hund inherites from Dog’s prototype bc we didn’t set it.
It may not be extremely clear but that is the basic idea, to my understanding.
So the basic wording of the problem is that whenever the prototype and the object have a ‘property-collision’ you may fall into errors.