From Javascript: The Definitive Guide,
var o = { x:1 }; // Start with an object
o.x = 2; // Mutate it by changing the value of a property
o.y = 3; // Mutate it again by adding a new property
What does { x: 1} do here? With the braces, it reminds me of function (or for objects, constructor). Can someone please elaborate on it, thanks.
An additional related question is:
({x:1, y:2}).toString() // => "[object Object]"
I find this question interesting as well.
What is the difference between object and Object in the above code? In fact, when do we use Object?
It makes the variable
ointo an object containing one property (x), and sets the value of that property to 1.Edit
To be clear, as you demonstrated, you don’t have to add properties this way. You can create a property on an object simply by assigning it (
o.y = "Awesomesauce")As to your related question;
{x:1, y:2}is simply an object literal with two properties x and y with the values 1 and 2, respectively. operating on this object literal is just like operating on a primitive value literal (console.log("my,string".split(",")))."[object Object]"is just how a non-specifically typed object is represented in string form.Edit 2
As per your comment: the lowercase "object" is the type.
typeof owill giveobject. The Object (capital "O") is just a string representation of{x:1}. A string representation of an array or number is "smart" because it knows more specifically the type. With a custom object, likeo, it’s just a generic object and thus writes:object (the type) Object (a string representation of o itself)