Reputation: 17040
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?
Upvotes: 6
Views: 341
Reputation: 8943
It makes the variable o
into an object containing one property (x
), and sets the value of that property to 1.
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.
As per your comment: the lowercase "object" is the type. typeof o
will give object
. 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, like o
, it's just a generic object and thus writes: object (the type) Object (a string representation of o itself)
Upvotes: 11
Reputation: 3160
It's called object initializer (At least in C#). It creates a new object o
and directly initiates the attribute x
with the value 1
Upvotes: 4
Reputation: 88428
You already have answers to the first part of your question.
For the second part, you have called the toString()
method stored in Object.prototype
.
For fun, try this instead:
JSON.stringify({x:1, y:2})
Upvotes: 2
Reputation: 308948
It's a JSON object, an associative array. The key is "x"; the value is 1.
Upvotes: 3