This is called a destructuring assignment. It's a newer feature being brought in the ECMAScript 6 spec.
Here is an example object:
var test = {
"hello": 1,
"world": 2
}
If we deconstruct it like this:
var {hello, world} = test;
This is the equivalent to doing:
var hello = test.hello,
world = test.world;
But, there is more fun stuff you can do with destructuring assignments...
Lets say we have this object:
var bucket = {
ExampleObject: function(input){
this.input = input.trim();
return this.input;
},
TestingObject: function(example){
this.example = example || {};
console.log(this.example.input);
}
}
Just for the record, I've given the members annoying names... So when destructuring, we can rename them like this:
var {ExampleObject: Example, TestingObject: Test} = bucket;
The binding pattern follows a syntax like so:
{ObjectMemberName}
// Or
{ObjectMemberName: VariableName}
For more information, you can look at the ECMAScript 6 specification draft or the MDN documentation