Accessing values in Objects.
Dot Notation is converting the value to a string (string literal). Example: myObj.name; is the same as myObj["name"]; and as we all know quotes define strings.
If you want to use a variable for accessing the value of object properties you cannot use Dot Notation. You have to use Bracket Notation. Example: var num = 42; myObj[num];
There are a few other limitations when accessing an object property. If the object key has a space or number in it, you cannot use dot notation.
var myObj = {
"key one": "Value for 'key one'",
"key": "Value for 'key'",
"method property": "Method Property would be a function",
"1": "Value for 'key 1'",
"2": "Value for 'key 2'"
};For ease of explanation, I'm just returning strings for my object property values. The object property keys have a few different aspects to them, a couple with spaces and a couple as numbers.
When you use dot notation to access:
myObj.key one; The object value returned will be a string: "Value for 'key'"
Whereas, when you use bracket notation and access an object property key:
myObj["key one"]; The object value returned will be a string "Value for 'key one'".
If you try to use dot notation to access an object property with a space in it that doesn't have an additional corresponding shorter object property key. (Like I did with "key one" and "key")
You'll get the error: Uncaught SyntaxError: Unexpected identifier or SyntaxError: Unexpected token, expected ;
If you attempt to just do myObj.method; you will get back the value undefined
Additionally, if you were to access a number with dot notation:
myObj.1; .. You will get an error: Uncaught SyntaxError: Unexpected number or you may get SyntaxError: Unexpected token, expected ;
If you want to access an object property with a number as the object key you will be required to use Bracket Notation:
myObj["1"]; and you will get the object property value of "Value for 'key 1'".