Testing Objects and Properties

function checkObj(obj, checkProp) {
  
  if(obj.hasOwnProperty(checkProp)){
    return obj[checkProp]
  }else{
    return "Not Found"
  }
  
}

Above is the code that works for the problem “Testing Objects and Properties”. It only works if you use “return obj[checkProp]”. It doesn’t work if you use “return obj.checkProp”. Why? Why doesn’t dot notation work in this situation?

There is no key called checkProp on that object.

var obj = {
  example: 1
}

obj.example is 1.
obj.checkProp doesn’t exist.

var checkProp = "example";

var obj = {
  example: 1
}

obj.example is 1.
obj.checkProp doesn’t exist

obj[checkProp] is 1.

The square brackets here say "evaluate what the value of the variable is inside them.
The value is the string “example”

obj["example"]
,```

Which is now same as:

obj.example

I’ve edited your post for readability. When you enter a code block into a forum post, please precede it with a separate line of three backticks and follow it with a separate line of three backticks to make it easier to read.

You can also use the “preformatted text” tool in the editor (</>) to add backticks around text.

See this post to find the backtick on your keyboard.
Note: Backticks (`) are not single quotes (’).

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.