"Please correct me if I'm wrong here, but as far as I know, this is a valid json object"
No.
"But it's also a javascript object."
yes.
UPDATE: my original answer continues below, but I missed an important syntax error which is helpfully pointed out by @badunk
The string
{ "a": 1, "b": true, c: [1, true, "2"] }
is JSON. JSON is just about notation - about which symbols make up valid syntax, and what they mean if they are processed.
Your code:
var foo = { "a": 1, "b": true, c: [1, true, "2"] };
..is a piece of javascript. When this is parsed and processed, the part on the right side of the assignment is called a javascript object literal. That is, a piece of javascript that denotes a literal object. But because it is in fact an object, it is not notation anymore - it is processed into a runtime data structure.
The term JSON is useful when you're talking about data exchange, for instance over HTTP. If a HTTP response passes a sting like this:
{ "a": 1, "b": true, c: [1, true, "2"] }
it is valid JSON.
If that would be interpreted, it would result in a javascript object.