Testing Objects for Properties two ways to get property

Tell us what’s happening:
why it works this way myObj[checkProp] but don’t work like here myObj.checkProp ???

Your code so far

// Setup
var myObj = {
  gift: "pony",
  pet: "kitten",
  bed: "sleigh"
};

function checkObj(checkProp) {
  // Your Code Here
  if(myObj.hasOwnProperty(checkProp)){
    return myObj[checkProp];
  }
  return "Not Found";
}

// Test your code by modifying these values
checkObj("gift");

Your browser information:

Your Browser User Agent is: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36.

Link to the challenge:
https://www.freecodecamp.org/challenges/testing-objects-for-properties

I think I understood what’s the matter, we can pass to function strings like “aaaa” and like “aaaaa aaaaa”, and this way myObj.checkProp can’t handle both of strings.

myObj.checkProp looks for a property with the name “checkProp”. It is the same as myObj["checkProp"].